Hallo,
mach mal bitte folgende Änderungen in deinen Code:
Delphi-Quellcode:
{$I+} // Expcetion werfen, wenn Fehler bei Reset... auftreten.
procedure TAutoList.LoadFromFile(
const FileName:
string);
var
datensatz: TFahrzeugdaten;
MyFile:
file of TFahrzeugdaten;
Auto: IAuto;
begin
begin
// erstmal prüfen, ob's die Datei tatsächlich gibt, wenn nicht liegt der Hund woanders begraben.
if not FileExists(FileName)
then begin
ShowMEssage('
Uups: Die Datei ' + FileName + '
gibt es ja garnicht.');
Exit;
end;
ShowMessage(FileName);
// Wir wollen wissen, ob es der von uns erwartete Dateiname ist.
AssignFile(MyFile, FileName);
try
try // Einen zusätzlichen Try-Except-Block, damit wir Fehler abfangen können.
Reset(MyFile);
// Wie groß ist die Datei?
// Hier wird angegeben, wieviele Sätze vom Typ TFahrzeugdaten in der Datei sind.
// Hier wird nicht angegeben, wie groß die Datei in Byte ist!!!
ShowMessage(inttostr(FileSize(MyFile)));
If EoF(MyFile)
then begin
ShowMessage('
EoF(MyFile) ist der Meinung, dass keine Fahrzeugdaten in der Datei sind.');
Exit;
end;
while not EOF(MyFile)
do
begin
Auto := TBackupClassesFactory.Auto;
read(MyFile, datensatz);
Auto.SetValue(floattostr(datensatz.kw),avps);
// Auto.ps := datensatz.ps;
// Auto.KW := datensatz.kw;
// Auto.Name := datensatz.fahrzeugName;
// Auto.kmh := 0;
// Auto.mph := 0;
add(Auto);
Count;
end;
except
// Wenn's irgendwo kracht, wollen wir wissen was passiert ist.
on e :
Exception do
begin
ShowMessage(e.
Message);
end;
finally
CloseFile(MyFile);
end;
end;
end;
end.
und erzähl' uns dann für jedes ShowMessage, was da ausgegeben wird und ob das, was da ausgegeben wird mit deinen Erwartungen übereinstimmt.
Wenn FileSize 0 liefert, dann liegt die Vermutung nahe, dass die Daten in der Datei nicht zum TFahrzeugdaten passen, dann prüfe bitte, ob die Typedefinition mit den Daten übereinstimmt.