Beschreibung C/C++ | n Spalten einer Tabelle werden in die an VF_nread übergebenen Vektoren eingelesen. Die Anzahl der Zeilen gibt also die Anzahl der Elemente jedes Vektors an: size.
Die einzelnen Einträge einer Zeile sollten durch Leerzeichen (' ') oder Tabulatoren ('\t') voneinander getrennt sein.
Jede Zeile muss durch einen Zeilenvorschub ('\n') abgeschlossen sein. Die Zeilenlänge ist dabei gemäß folgenden Regeln begrenzt:
- Entweder alle Zeilen sind gleich lang. Dann wird die Länge automatisch bestimmt und darf im Prinzip bis zu 65535 Zeichen betragen.
- Oder die maximale Länge einer Zeile richtet sich nach dem Datentyp und der Anzahl n einzulesender Vektoren:
|
|
|
|
|
|
|
|
|
VI_, VU_ | wie VLI_, VUL_ (in den 16-bit-Modellen wie VSI_, VUS_) |
|
| |
Es ist möglich, weniger Vektoren einzulesen als eine Tabelle Spalten hat. Dann bleiben die hintersten Spalten unberücksichtigt. Liegen jedoch weniger Spalten vor als Vektoren eingelesen werden sollen, ist mit merkwürdigen bis katastrophalen Ergebnissen zu rechnen.
Komplexe Versionen (cartesisch und polar):
Real- und Imaginärteil (bzw. Mag- und Arg-Teil) dürfen (müssen aber nicht) durch geschweifte Klammern { } zusammengefaßt sein. Die Behandlung muss aber einheitlich sein: Entweder alle oder gar kein Element darf mit geschweiften Klammern geschrieben sein!
Ganzzahl-Versionen außer VQI_nread:
Standardmäßig werden die zu lesenden Zahlen als Dezimalzahlen interpretiert. Mittels V_setRadix läßt sich aber auch eine andere Basis zwischen 2 und 36 definieren. |
Beispiel C/C++ | VF_nread( 3, 100, DataFile, X, Y, Z ); |
GCC-Windows-spezifisch: | Zwar unterstützt GCC auch in der Windows-Portierung den 80-bit-Fließkomma-Typ long double. Die I/O-Routinen verwenden aber die Laufzeitbibliothek von Visual C++, wo 80-bit-long doubles schon seit langem nicht mehr vorkommen. Dies bedeutet, dass VE_nread, VCE_nread und VPE_nread bei GCC nur mit double-Genauigkeit und innerhalb des für doubles möglichen Größenbereiches arbeiten. |
Beschreibung Pascal/Delphi | n Spalten einer Tabelle werden in die als Liste VecList an VF_nread übergebenen Vektoren eingelesen. Die Anzahl der Zeilen ist durch size, die Anzahl der Elemente jedes Vektors, gegeben.
Die einzelnen Einträge einer Zeile müssen durch Leerzeichen (' ') oder Tabulatoren (#9) voneinander getrennt sein. Andere Trennzeichen sind nicht zulässig. Jede Zeile muss durch einen Zeilenvorschub (#13) abgeschlossen sein.
Es ist möglich, weniger Vektoren einzulesen als eine Tabelle Spalten hat. Dann bleiben die hintersten Spalten unberücksichtigt. Liegen jedoch weniger Spalten vor als Vektoren eingelesen werden sollen, ist mit merkwürdigen bis katastrophalen Ergebnissen zu rechnen.
Komplexe Versionen (cartesisch und polar):
Real- und Imaginärteil (bzw. Mag- und Arg-Teil) dürfen (müssen aber nicht) durch geschweifte Klammern { } zusammengefaßt sein. Sie müssen voneinander durch Leer- oder Tab-Zeichen getrennt sein. Die Behandlung muss aber einheitlich sein: Entweder alle oder gar kein Element darf mit geschweiften Klammern geschrieben sein! Zusätzlich ist ein unmittelbar (ohne vorherigen Whitespace) auf den Realteil folgendes Komma zugelassen.
Während die C-Version dieser Funktion den Konventionen der C-Funktionen strtod, strtol usw. folgt, richtet sich die Pascal/Delphi-Version nach den Regeln der Pascal/Delphi-Funktion Read. Dies hat eine wesentlich geringere Flexibilität der Pascal/Delphi-Version zur Folge:
- keine Trennzeichen außer ' ' und #9 zugelassen,
- keine automatische Anpassung überlaufender Zahlen,
- keine Funktion V_setRadix (mittels derer in der C-Version eine Basis außer 10 für die Ganzzahl-Varianten definiert werden kann). |
Beispiel Pascal/Delphi | var MyFile: Text;
X, Y1, Y2: fVector;
VList: array[0..2] of fVector;
begin
X := VF_vector( 100 );
Y1 := VF_vector( 100 );
Y2 := VF_vector( 100 );
VList[0] := X; VList[1] := Y1; VList[2] := Y2;
Assign( MyFile, 'Myfile.DAT' );
Reset( MyFile );
VF_nread( @VList, 3, 100, MyFile );
...
end; |
|