![]() |
Re: Textdatei in Liste laden
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; aRec: TFahrzeugdaten; pAuto: IAuto; begin if OpenDialog1.Execute then begin //<-- wichtig! AssignFile(MyFile, OpenDialog1.FileName); Reset(MyFile); while not EOF(MyFile) do begin read(MyFile, aRec); pAuto := TBackupClassesFactory.Auto; pAuto.PS := aRec.ps; pAuto.KW := aRec.kw; pAuto.Name := aRec.fahrzeugName; end; CloseFile(MyFile); //<-- nicht vergessen end; //s.o. end; |
Re: Textdatei in Liste laden
Hallo,
Delphi-Quellcode:
Mir wird jetzt immer der gleiche Eintrag angezeigt.
procedure TForm1.Button1Click(Sender: TObject);
var Auto: IAuto; datensatz: TFahrzeugdaten; MyFile: file of TFahrzeugdaten; begin Auto := TBackupClassesFactory.Auto; AutoList := TbackupClassesFactory.AutoList; if OpenDialog1.Execute then begin AssignFile(MyFile, OpenDialog1.FileName); Reset(MyFile); while not EOF(MyFile) do begin read(MyFile, datensatz); Auto.PS := datensatz.ps; Auto.KW := datensatz.kw; Auto.Name := datensatz.fahrzeugName; // [DCC Warning] Unit1.pas(135): W1057 Implicit string cast from 'ShortString' to 'string' Auto.kmh := 0; Auto.mph := 0; AutoList.add(Auto); lbEintraege.Caption := IntToStr(AutoList.Count); end; CloseFile(MyFile); end; end; Kann jemand einen Fehler finden. Gruß, Schnittcher |
Re: Textdatei in Liste laden
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Auto: IAuto; datensatz: TFahrzeugdaten; MyFile: file of TFahrzeugdaten; begin Auto := TBackupClassesFactory.Auto; AutoList := TbackupClassesFactory.AutoList; if OpenDialog1.Execute then begin AssignFile(MyFile, OpenDialog1.FileName); Reset(MyFile); while not EOF(MyFile) do // <-- hier mal einen Breakpoint setzen und mit F8 schrittweise den Code abarbeiten begin read(MyFile, datensatz); Auto.PS := datensatz.ps; // Datensatz.ps markieren und Ctrl+F5 drücken Auto.KW := datensatz.kw; // Datensatz.kw markieren und Ctrl+F5 drücken Auto.Name := datensatz.fahrzeugName; // Datensatz.fahrzeugName markieren und Ctrl+F5 drücken Auto.kmh := 0; Auto.mph := 0; AutoList.add(Auto); lbEintraege.Caption := IntToStr(AutoList.Count); end; CloseFile(MyFile); end; end; Mit ctrl+F5 kannst Du dir Variablen in der Watchlist anschauen ändern sich da die Werte? Zählt AutoList.count hoch? Sind in der Datei auch unterschiedliche Werte gespeichert? Grüße Klaus |
Re: Textdatei in Liste laden
Zitat:
:cheers: ..war ich auch letzten 2 Wochen ;-) |
Re: Textdatei in Liste laden
Danke, Kaki :cheers:
|
Re: Textdatei in Liste laden
Hallo,
ja die Werte ändern sich, dass hätte ich vielleicht auch schreiben sollen. Die Anzahl der Einträge geht auch nach oben. Was könnte es sein? Gruß, Schnittcher |
Re: Textdatei in Liste laden
Guten Morgen Schnittcher,
ich würde eigentlich erwarten, das pro eingelesen Datensatz auch ein Object/Interface vom Typ Auto generiert wird. nun weiß ich leider nicht was diese Zeilen machen:
Delphi-Quellcode:
Wird da ein "Auto" angelegt?Auto := TBackupClassesFactory.Auto; AutoList := TbackupClassesFactory.AutoList; Wird da eine leere AutoList angelegt? Wenn das nun alles mit "normalen" Objecten laufe würde, würde ich es so machen:
Delphi-Quellcode:
type TAuto = class(TObject) ... end; TAutoList = class(TObjectList); ... end; procedure TForm1.Button1Click(Sender: TObject); var Auto: TAuto; datensatz: TFahrzeugdaten; MyFile: file of TFahrzeugdaten; begin //Auto := TBackupClassesFactory.Auto; AutoList := TAutoList.create(true); // eine leere Liste erstellen if OpenDialog1.Execute then begin AssignFile(MyFile, OpenDialog1.FileName); Reset(MyFile); while not EOF(MyFile) do // <-- hier mal einen Breakpoint setzen und mit F8 schrittweise den Code abarbeiten begin read(MyFile, datensatz); Auto : TAuto.create; // neue Autoinstanz erstellen Auto.PS := datensatz.ps; Auto.KW := datensatz.kw; Auto.Name := datensatz.fahrzeugName; Auto.kmh := 0; Auto.mph := 0; AutoList.add(Auto); // Der Liste hinzufügen lbEintraege.Caption := IntToStr(AutoList.Count); end; CloseFile(MyFile); end; end; Mit Interfaces habe ich mich bisher noch nicht beschäftigt aber ich denke das es eigentlich da ähnlich sein sollte. Grüße Kalus Grüße Klaus |
Re: Textdatei in Liste laden
Hallo Klaus,
ich möchte mich jetzt erstmal dafür bedanken das du die die Zeit nimmst mir zu helfen, ich möchte auch DeddyH danken, der mir gestern noch sehr lange per PN und im Chat geholfen hat.
Delphi-Quellcode:
da steht das hier hinter:
Auto := TBackupClassesFactory.Auto;
AutoList := TbackupClassesFactory.AutoList;
Delphi-Quellcode:
also die Liste und das Auto werden erstellt.
class function TBackupClassesFactory.AutoList: IAutoList;
begin Result := TautoList.Create; end; class function TBackupClassesFactory.Auto: IAuto; begin Result := TAuto.Create; end; Gruß, Schnittcher |
Re: Textdatei in Liste laden
Zitat:
Du musst pro gelesenen "Datensatz" ein Auto generieren, ansonsten verweisen Deine Instanzen in der Liste alle auf die gleiche Instanz und alle Werte Deiner Liste haben die Werte des zuletzt gelesenen Datensatzes. Grüße Klaus |
Re: Textdatei in Liste laden
Hallo,
kannst du mal kurz in den Chat kommen? Gruß, Schnittcher |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz