Thema: Delphi File of eigener Typ

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#14

Re: File of eigener Typ

  Alt 26. Mai 2010, 09:43
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]);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat