ReadAvail liefert konstant 31

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ZEVS

Betreff: ReadAvail liefert konstant 31

BeitragSo, Jul 31, 2011 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei dem Versuch einer MySQL-Verbindung stoße ich auf ein merkwürdiges Problem: ReadAvail liefert mir beim zweiten Paket, das empfangen werden soll, immer den Wert 31 - auch nach Auslesen durch ReadByte(s)

BlitzBasic: [AUSKLAPPEN]

Function mysql_get_packet(conn.mysqlConn)
If Eof(conn\stream) Then RuntimeError "EOF"
If ReadAvail(conn\stream) = 0 Then ;Warte auf ein Paket
Local timer = CreateTimer(10)
Repeat
WaitTimer timer
Until ReadAvail(conn\stream)
FreeTimer timer
EndIf
Local head = ReadInt(conn\stream) ;Header auslesen
Local size = head And $00FFFFFF
Local no = convertInt(head And $FF000000)
Local result = CreateBank(size) ;Ergebnis in einer Bank
ReadBytes result, conn\stream, 0, size ;eigentlich alle Bytes auslesen (Größe steht im Header)
DebugLog "got a packet"
If ReadAvail(conn\stream) <> 0 Then ;Sollte nicht passieren
DebugLog "THERE IST STILL SOME READ AVAIL ("+ReadAvail(conn\stream)+" bytes)!!!" ;31
Local ra = ReadAvail(conn\stream) ;31
For i=1 To ra ;31 mal
DebugLog ReadByte(conn\stream) ;0
DebugLog ReadAvail(conn\stream)+" bytes left"; 31
Next
Else
DebugLog "There is no read avail any more."
EndIf
Return result
End Function


DebugLog:
Code: [AUSKLAPPEN]

got a packet
there is no read avail any more
...
got a packet
THERE IS STILL SOME READ AVAIL (31 Bytes)
0
31 bytes left
0
31 bytes left
0
31 bytes left
0
31 bytes left
0
31 bytes left
0
31 bytes left
0
31 bytes left
0
31 bytes left
0
31 bytes left
0
31 bytes left
0
31 bytes left
u.s.w.


Wenn man statt der For-Schleife eine While-Schleife benutzt, geht es so bis in das unendliche. Interessanterweise ist beim zweiten Paket auch der Header 0 (woraus ich schlussfolgere, dass gar kein Paket angekommen ist). Dennoch ist ReadAvail konstant auf diesem merkwürdigen Wert 31. Das kann doch nicht sein!
Question Question Question Question

edit: Aus der Ergebnis-Bank kann ich Werte auslesen, obwohl die Bank eine Größe von 0 hat.
Question Question Question Question Question Question Question Question Question

Verweifelt
ZEVS

edit: Habe Support-Anfrage abgeschickt. Sah mir zu stark nach bug aus.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group