Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anfängerproblem: Array von einem Record aus Datei auslesen (https://www.delphipraxis.net/45051-anfaengerproblem-array-von-einem-record-aus-datei-auslesen.html)

De-Prinz 28. Apr 2005 17:34


Anfängerproblem: Array von einem Record aus Datei auslesen
 
Hallo, also ich habs eben schon mit der Suche probiert, aber das hat mich alles nur noch mehr verwirrt.

Ich habe nur Anfängerkenntnisse in Delphi und versuche mich vergebens daran, ein Array von Records aus einer einfachen Textdatei auszulesen. Ich kenne das auslesen aus einer Datei nur aus Pascal, aber das funzt nicht mit Delphi, da bekomme ich nur Fehlermeldungen.

Also hätte ich mal gerne euren Rat:

Folgende Struktur der Datei xy.dat

Satz[1].Frage:='Bla bla';
Satz[1].Antwort1:='bla';
Satz[1].Antwort2:='bla';
Satz[1].Antwort3:='bla';
Satz[1].Korrekt:='x';
.
.
.

Alles ausser Korrekt sind strings, das korrekt soll ein char werden. Wie gehe ich jetzt am besten vor um die Datei in Delphi auszulesen.
Und ja ich weiss, dass ähnliche Probleme schon gestellt worden sind, aber wie gesagt, ich kenne mich da nicht aus und es gibt ja anscheinend auch mehrere Arten eine Datei auszulesen.

Gruß

sniper_w 28. Apr 2005 17:39

Re: Anfängerproblem: Array von einem Record aus Datei ausles
 
Delphi-Quellcode:
 var datei : TStringList;
    s:string;
begin
 datei := TStringList.Create;
 datei.LoadFromFile('xy.dat');
 // bearbeiten...
 s := datei.Strings[2]; // <<<--- dritte linie in der datei, z.b.
 //

 // sowiel hast du ausgelesen :
 Caption := 'Gelesen: '+IntToStr(datei.Count);
 datei.Free;
end;
EDIT:
Und ja :mrgreen: Willkommen. :dp:

jfheins 28. Apr 2005 17:39

Re: Anfängerproblem: Array von einem Record aus Datei ausles
 
Hier, schau dir mal dieses Tutorial an, da lernst du, wie man mit Filestreams arbeitet.
Du musst nämlich erst die Länge des Strings und dann des String selbst hinenschreiben, da der String ja verschieden lang sein kann ... ;)

http://www.dsdt.info/tutorials/streams/

De-Prinz 28. Apr 2005 17:43

Re: Anfängerproblem: Array von einem Record aus Datei ausles
 
Vielen Dank schonmal für die 2 Antworten, ich werde den Quelltext mal probieren und mir das Tut mal anschauen und euch dann höchstwahrscheinlich nochma nerven ;-)

simonit 28. Apr 2005 18:18

Re: Anfängerproblem: Array von einem Record aus Datei ausles
 
Allerdings kann man es auch mit der Methode aus Pascal machen, da du dich dort sicherlich leichter tun wirst:

Delphi-Quellcode:
var datei:=textfile;
count:integer; //zählvariable
begin
{$I-}
    AssignFile(datei,Dateinamenstring);//
    reset(datei);
    if IOResult <> 0 THEN
      rewrite(datei); //ist die Datei nicht vorhanden wird sie angelegt.
  {$I+}
    while (not seekeof(datei)) do
    begin
      readln(datei,Satz[count].Frage);
      readln(datei,Satz[count].Antwort1);
      readln(datei,Satz[count].Antwort2);
            //usw.

      count:=count+1;
    end;
  closefile(datei);
end;
count stellt eine Zählvariable dar, solltest du eine größere TextDatei in mehrere Positionen des Arrays einlesen wollen. Ist jeweils nur eine Zeile einzulesen, schreib einfach nur ein readln hin ;) Diese Struktur setzt allerdings eine Datei folgender Form voraus:

Delphi-Quellcode:
Bla bla
antwort1 
Antwort2 
Antwort3
eine Readln-anweisung liest dir dabei jeweils eine Zeile der Textdatei ein.

Edit: Wenn deine Datei so wie oben beschrieben schon besteht kann man sie relativ einfach mit einem Filter auf das gewünschte risultat bringen.

mfg matthias

De-Prinz 29. Apr 2005 20:45

Re: Anfängerproblem: Array von einem Record aus Datei ausles
 
Also ich hatte gerade Zeit mal alles zu probieren. Resultat: Viele Fehlermeldungen und schlechte Laune ;-)

Also mit dem Tutorial kam ich leider nicht zurecht, da der angegebene Quellcode Fehlermeldungen produziert hat und ich erst gar nichts zum laufen bekommen hab.
Das beste Resultat hatte ich mit der Idee von sniper_w, allerdings hat der mir immer eine 6 ausgegeben?! Also egal welche Zeile ich angegeben hab oder was in der Datei stand, ich hab immer "gelesen: 6" bekommen. Kann sich da einer den fehler denken?

idontwantaname 29. Apr 2005 21:06

Re: Anfängerproblem: Array von einem Record aus Datei ausles
 
gelesen: 6 bezieht sich auf die anzahl der zeilen :wink:

De-Prinz 30. Apr 2005 00:54

Re: Anfängerproblem: Array von einem Record aus Datei ausles
 
ich trottel :stupid:

De-Prinz 30. Apr 2005 12:16

Re: Anfängerproblem: Array von einem Record aus Datei ausles
 
Also ich muss mich an dieser Stelle mal für die Hilfe bedanken. Proggi läuft hervorragend!!! :-D

Ich lese die Daten zwar nicht als ein Array von einem Record ein, aber so geht das auch mit dem Zeilenweisen auslesen.

Problem behoben


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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