Thema: Delphi LoadFromFile

Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#15

Re: LoadFromFile

  Alt 11. Sep 2009, 14:32
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.
  Mit Zitat antworten Zitat