![]() |
Re: Textdatei in Liste laden
Hallo,
wenn du die Zeit dazu hast das hier: Zitat:
Schnittcher |
Re: Textdatei in Liste laden
Delphi-Quellcode:
// einen Record (datensatz) Type angelegt // ein Record ist eine Datenstruktur (ein Zusammenschluß von Daten) type TFahrzeugdaten = packed record fahrzeugName : String[50]; kw : single; ps : single; end;
Delphi-Quellcode:
Für zum Speichern sollte es ungefähr wie oben beschrieben aussehen.
procedure TForm1.cmdListSpeichernClick(Sender: TObject);
var i: integer; pAuto: IAuto; myfile: File of TFahrzeugdaten; // ein Dateivariable deklariert datenSatz : TFahrzeugdaten; // eine Variable zur Aufnahme der Daten deklariert begin try if AutoList = nil then raise EBerechnung.Create('Wenn es keine Liste gibt, kann man sie auch nicht speichern.'); if SaveDialog1.Execute then AssignFile(myFile, SaveDialog1.FileName); Rewrite(myFile); for i := 0 to AutoList.Count - 1 do begin pAuto := AutoList.Items[i]; // zuweisen der Daten datensatz.fahrzeugName := pAuto.ErgebnisName; datensatz.kw := pAuto.ErgebnisKW; datensatz.ps := pAuto.ErgebnisPS; // Daten in die Datei schreiben Write(myfile,datensatz); end; CloseFile(myFile); except on E: EBerechnung do MessageDlg(E.Message, mtInformation, [mbOK], -1); end; end; Grüße Klaus |
Re: Textdatei in Liste laden
Hallo,
erstmal danke für die Umstellung meines Codes. Aber könntest du mir auch noch erklären was du da jetzt getan hast? Wenn ich das richtig verstehe hast du alles in ein "Paket" gespeichert. Dann kann ich das also auch so wieder ausgeben? Gruß, Schnittcher |
Re: Textdatei in Liste laden
Ich bin im Moment krank geschrieben, von daher hab ich jede Menge Zeit ;)
Also: wie der Name schon sagt, besteht eine typisierte Datei aus Datensätzen eines bestimmten Typs. Dieser ist im Normalfall als Record definiert. Beispiel:
Delphi-Quellcode:
Will man nun z.B. ein Array of TMyRec abspeichern, kann man das so machen (Fehlerbehandlung mal außen vor gelassen):
type
TMyRec = record Name: shortstring; //NICHT string, da sonst nur der Zeiger gespeichert würde Nummer: integer; ZahlmitKomma: double; end; ... var MyFile: file of TMyRec; //file of Datentyp --> typisierte Datei
Delphi-Quellcode:
Andersherum (Einlesen):
AssignFile(MyFile,Dateiname);
//Datei überschreiben Rewrite(MyFile); //Jeden einzelnen Datensatz in Datei schreiben for i := Low(MyRecArray) to High(MyRecArray) do write(MyFile,MyRecArray[i]); CloseFile(MyFile);
Delphi-Quellcode:
Das war jetzt alles aus dem Kopf getippt, muss daher nicht unbedingt so funktionieren, aber ich hoffe, Du hast das Prinzip verstanden. AFAIK gibt es dazu auch ein Tutorial hier in der DP, wo Du noch einmal genauer nachlesen kannst.
AssignFile(MyFile,Dateiname);
Reset(MyFile); //Anzahl der Datensätze ermitteln und Arraygröße entsprechend setzen SetLength(MyRecArray, FileSize(MyFile)); i := 0; while not EOF(MyFile) do begin //aktuellen Datensatz einlesen read(MyFile,MyRecArray[i]); //Array-Index erhöhen inc(i); end; CloseFile(MyFile); |
Re: Textdatei in Liste laden
Hallo,
danke für die Antwort. Könntest du vll. mal kurz in den Chat kommen? Gruß, Schnittcher |
Re: Textdatei in Liste laden
Zitat:
Grüße Klaus |
Re: Textdatei in Liste laden
Danke Dir.
|
Re: Textdatei in Liste laden
Hallo,
so von mir auch noch gute Besserung.
Delphi-Quellcode:
Er schreibt beim öffnen nichts in meine Liste.
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; aRec: TFahrzeugdaten; pAuto: IAuto; begin if OpenDialog1.Execute then AssignFile(MyFile, OpenDialog1.FileName); Reset(MyFile); //Anzahl der Datensätze ermitteln und Arraygröße entsprechend setzen i := 0; 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; end; Gruß, Schnittcher |
Re: Textdatei in Liste laden
Delphi-Quellcode:
Fällt dir was auf?
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; aRec: TFahrzeugdaten; pAuto: IAuto; begin if OpenDialog1.Execute then AssignFile(MyFile, OpenDialog1.FileName); // Diese Zeile Code nur Ausführen, //wenn im Dialog "OK" geklickt wurde // Folgendes immer ausführen Reset(MyFile); //Anzahl der Datensätze ermitteln und Arraygröße entsprechend setzen i := 0; 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; end; |
Re: Textdatei in Liste laden
Delphi-Quellcode:
Grüße
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; aRec: TFahrzeugdaten; pAuto: IAuto; begin if OpenDialog1.Execute then AssignFile(MyFile, OpenDialog1.FileName); Reset(MyFile); //Anzahl der Datensätze ermitteln und Arraygröße entsprechend setzen i := 0; while not EOF(MyFile) do begin read(MyFile, aRec); //pAuto := IAuto.create; // keine Ahnung ob das bei Interfaces so geht pAuto := TBackupClassesFactory.Auto; // ist das sowas wie create? pAuto.PS := aRec.ps; pAuto.KW := aRec.kw; pAuto.Name := aRec.fahrzeugName; autoList.items.add(pAuto); // Object in die Liste einfügen end; end; Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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