SckRead
Mit dieser Funktion werden Daten vom Socket (obj) gelesen. Durch die Angabe einer Option in (int1) kann die Anzahl der Zeichen auf eine Zeile oder auf die Größe der in (var2) angegebenen Variablen begrenzt werden.
In der Beispiel-Datenbank "CodeLibrary" befindet sich ein Beispiel zur Kommuikation mit einem FTP-Server.
In (var2) muss ein Datenbankfeld, eine Variable oder ein Array angegeben werden. Arrays aus Alphafeldern sind dabei nicht zulässig. Sofern (int3) nicht angegeben ist, wird die der Größe der Variablen (var2) entsprechende Anzahl von Bytes oder eine Zeile eingelesen. Der Wert in (int3) kann daher auch nicht größer als die Größe der Variable selbst sein.
Das Resultat gibt die Anzahl der gelesenen Bytes zurück. Ist das Resultat negativ, ist ein Fehler aufgetreten, und das Resultat enthält den Fehlerwert.
Je nach Datentyp werden folgende Formate benutzt:
-
Es kann sowohl eine feste als auch eine variable Anzahl von Zeichen eingelesen werden.
Bei einer festen Anzahl steht in (int3) die Anzahl der zu lesenden Bytes. Bei einer variablen Anzahl wird (int3) weggelassen und die Option
_SckReadMaxin (int1) verwendet. In diesem Fall werden soviele Zeichen eingelesen, wie momentan empfangen wurden oder bis die maximale Länge erreicht ist.Alternativ kann mit der Option
_SckLineeine komplette Zeile gelesen werden, die durch CR/LF abgeschlossen ist. CR/LF wird dabei nicht in die Variable übertragen. Diese Option wird bei vielen zeilenorientierten Protokollen benutzt (SMTP, POP3 usw.). -
Es werden 8 Bytes gelesen. Das Format entspricht dem IEEE-Double.
-
Es werden 2 Bytes gelesen. Das Format entspricht dem Intel-Wortformat (16 Bit - little endian).
-
Es werden 4 Bytes gelesen. Das Format entspricht dem Intel-Doppelwortformat (32 Bit - little endian).
-
Es werden 4 Bytes gelesen. (Byte 1 = Tag, Byte 2 = Monat, Byte 3 = Jahr, Byte 4 ist grundsätzlich leer.)
-
Es werden 4 Bytes gelesen. (Byte 1 = Stunde, Byte 2 = Minute, Byte 3 = Sekunde, Byte 4 = Hundertstelsekunde.)
-
Es wird 1 Byte gelesen (Wert gleich
0entsprichtfalse, Wert gleich1entsprichttrue).
Mögliche Fehlerwerte:
_ErrHdlInvalid: (obj) ist nicht definiert oder kein Socket-Deskriptor._ErrSckDown: Der Socket wurde außerhalb der Applikation geschlossen_ErrSckSelect: Bei der Socketabfrage ist ein Fehler aufgetreten_ErrSckRead: Beim Lesen des Sockets ist ein Fehler aufgetreten_ErrSckReadOverflow: empfangene Zeile länger als die angegebene Variable_ErrTimeout: Beim Lesen oder Schreiben des Sockets ist ein Timeout aufgetreten