AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei in Liste laden

Ein Thema von Schnittcher · begonnen am 9. Sep 2009 · letzter Beitrag vom 10. Sep 2009
Antwort Antwort
Seite 2 von 3     12 3      
Schnittcher

Registriert seit: 25. Aug 2009
Ort: Blomberg
120 Beiträge
 
#11

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 13:36
Hallo,

wenn du die Zeit dazu hast das hier:


Zitat von DeddyH:
Allerdings wäre es IMHO einfacher, typisierte Dateien statt Textdateien zu verwenden, das spart die ganze Stringfrickelei samt Konvertierung.
Gruß,
Schnittcher
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 13:46
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:
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;
Für zum Speichern sollte es ungefähr wie oben beschrieben aussehen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Schnittcher

Registriert seit: 25. Aug 2009
Ort: Blomberg
120 Beiträge
 
#13

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 13:48
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 13:48
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:
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
Will man nun z.B. ein Array of TMyRec abspeichern, kann man das so machen (Fehlerbehandlung mal außen vor gelassen):
Delphi-Quellcode:
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);
Andersherum (Einlesen):
Delphi-Quellcode:
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);
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Schnittcher

Registriert seit: 25. Aug 2009
Ort: Blomberg
120 Beiträge
 
#15

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 13:50
Hallo,

danke für die Antwort.

Könntest du vll. mal kurz in den Chat kommen?

Gruß,
Schnittcher
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 13:58
Zitat von DeddyH:
Ich bin im Moment krank geschrieben, von daher hab ich jede Menge Zeit ;)
Gute Besserung

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 14:07
Danke Dir.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Schnittcher

Registriert seit: 25. Aug 2009
Ort: Blomberg
120 Beiträge
 
#18

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 14:18
Hallo,

so von mir auch noch gute Besserung.

Delphi-Quellcode:
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;
Er schreibt beim öffnen nichts in meine Liste.

Gruß,
Schnittcher
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#19

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 14:23
Delphi-Quellcode:
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;
Fällt dir was auf?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: Textdatei in Liste laden

  Alt 9. Sep 2009, 14:23
Delphi-Quellcode:
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;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz