Zum Hauptinhalt springen

FsiRead

obj -> FsiRead(var1[, int2]) : int

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von Clients mit Programmierschnittstelle Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service

Dateibereich lesen

Details

Mit dieser Funktion werden Daten aus der externen Datei (obj) ab der aktuellen Position gelesen (siehe FsiSeek ()). In (var1) muss ein Datenbankfeld, eine Variable oder ein Array angegeben werden. Arrays aus Alphafeldern sind dabei nicht zulässig. Sofern (int2) nicht angegeben ist, wird die der Größe der Variablen (var1) entsprechende Anzahl von Bytes eingelesen. Der Wert in (int2) kann daher auch nicht größer als die 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 (_ErrFsi...). Der Fehlerwert des Betriebssystems kann über die Eigenschaft FsiError abgefragt werden.

Je nach Datentyp werden folgende Formate benutzt:

  • alpha (Alphanumerisch) Es kann sowohl eine feste als auch eine variable Anzahl von Zeichen eingelesen werden. Bei einer festen Anzahl steht in (int2) die Anzahl der zu lesenden Bytes. Bei einer variablen Anzahl wird (int2) weggelassen. In diesem Fall werden soviele Zeichen eingelesen, bis das Endezeichen (siehe FsiMark ()), die maximale Variablenlänge oder das Dateiende erreicht ist. Das Endezeichen selbst wird zwar gelesen, aber nicht in die Variable übertragen. Der Dateizeiger steht dann auf dem ersten Byte hinter dem Endezeichen. Das ASCII- Zeichen NUL kann nicht eingelesen werden. Beim Lesen werden die Zeichenketten standardmäßig von der OEM-Zeichencodierung in die interne Zeichencodierung gewandelt. Durch entsprechende Angaben bei der Anweisung FsiOpen () kann eine andere Wandlung vorgenommen oder die Wandlung verhindert werden.
  • float (Gleitkomma) Es werden acht Bytes gelesen. Das Format entspricht dem IEEE-Double-Precision-Real-Format (64 Bit).
  • word (Ganzzahlig kurz) Es werden zwei Bytes gelesen. Das Format entspricht dem Intel-Wortformat (16 Bit - little endian).
  • int (Ganzzahlig lang) Es werden vier Bytes gelesen. Das Format entspricht dem Intel-Doppelwortformat (32 Bit - little endian).
  • date (Datum) Es werden vier Bytes gelesen. (Byte 1 = Tag, Byte 2 = Monat, Byte 3 = Jahr, Byte 4 ist grundsätzlich leer.)
  • time (Zeit) Es werden vier Bytes gelesen. (Byte 1 = Stunde, Byte 2 = Minute, Byte 3 = Sekunde, Byte 4 = Hundertstelsekunde.)
  • logic (Logisch) Es wird ein Byte gelesen (Wert gleich 0 entspricht false, Wert gleich 1 entspricht true.)
info

Beim Einlesen von ASCII-Dateien wird ausschließlich mit alphanumerischen Feldern bzw. Variablen gearbeitet. Diese müssen dann gegebenenfalls in der Prozedur in andere Feldtypen umgewandelt werden.

Beispiele:

// Einlesen eines ASCII-Werts fester Länge
tHdl->FsiRead(tAlpha, 20);

// Einlesen eines ASCII-Werts bis zum Komma
tHdl->FsiMark(44); // Komma als Trennzeichen setzen
tLen # tHdl->FsiRead(tAlpha); // tLen enthält die Länge

// Einlesen von 4 KB in ein Array
tBuffer : byte[4096];
...
tHdl->FsiRead(tBuffer);

Mögliche Laufzeitfehler: