effktiver =
f.ReadBuffer(MeinArray[0],SizeOf(TMeinRec) * Anzahl); // alle Records einlesen
noch was zur Fehlerbehandlung:
- TFileStream.Create gibt schon eine gute Fehlermeldung aus ... diese muß ja nicht unbedingt zerstören
- und was passiert mit "f", wenn ReadBuffer oder SetLength eine
Exception werfen?
Delphi-Quellcode:
if FileExists(Path+OpenName)
then begin //Path und OpenName sind Verzeichnis und Dateiname
f := TFileStream.Create(Path+OpenName, fmOpenRead)
try
f.ReadBuffer(Anzahl, SizeOf(Integer));
//anzahl wird hier mit der Anzahl der Records geladen
SetLength(MeinArray, Anzahl);
//und kann direkt für SetLenghth genutzt werden
f.ReadBuffer(MeinArray[0],SizeOf(TMeinRec) * Anzahl);
// alle Records einlesen
finally
f.Free;
end;
end
else
raise Exception.CreateFmt('
Datei "%s" existiert nicht.', [OpenName]);
oder
Delphi-Quellcode:
if FileExists(Path+OpenName)
then begin //Path und OpenName sind Verzeichnis und Dateiname
f := TFileStream.Create(Path+OpenName, fmOpenRead)
try
Anzahl := f.Size
div SizeOf(TMeinRec);
// Anzahl wird aus der Dateigröße berechnet
SetLength(MeinArray, Anzahl);
//und kann direkt für SetLenghth genutzt werden
f.ReadBuffer(MeinArray[0], SizeOf(TMeinRec) * Anzahl);
// alle Records einlesen
finally
f.Free;
end;
end
else
raise Exception.CreateFmt('
Datei "%s" existiert nicht.', [OpenName]);