Zitat von
malte_M:
EOF ist für den I/O Error 6 verantwortlich, soviel habe ich schon rausgefunden. Die Anzahl der Elemente läßt sich aber leicht errechnen. Größe des Streams durch Größe eines Records.
Dann mach das auch.
Hier noch ein paar Kommentare:
Delphi-Quellcode:
Procedure LoadfromFile;
var
f: TFileStream;
i: integer;
begin
i:=0;
f := TFileStream.Create(ExtractFilePath(Paramstr(0))+'iv1.dat',fmOpenRead);
f.position:=0; // unnötig, nach dem Öffnen ist er immer bei 0
try
while not eof do // was ist eof? wo definiert? TFileStream hat keine solche Eigenschaft (du greifst nichtmal auf TFileStream zu)
begin
SetLength(bwl1,length(bwl1)+1); // wenn du das berechnen kannst aus der Grösse der Datei, dann mach das einmalig vorher.
f.Read(bwl1[i].channel,1); // wenn du das ganze schreibst, dann schreibst du den Record auf einmal, warum
f.Read(bwl1[i].duration,4); // liest du ihn dann hier auf einmal in Einzelteilen? Grund?
inc(i,5); // Warum das? Warum springst du im Array gleich 5 Indexe weiter anstatt einfach Record um Record einzulesen?
f.position:=i; // Wozu? Beim Schreiben setzt du den Dateizeiger auch nicht mit jedem Record weiter - warum sollte es also beim Lesen erforderlich sein?
end;
finally
f.Free;
end;
{ }
end;