Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Dynamisches Array aus Filestream lesen ?

  Alt 8. Mai 2007, 10:52
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;
  Mit Zitat antworten Zitat