![]() |
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ß |
Re: Anfängerproblem: Array von einem Record aus Datei ausles
Delphi-Quellcode:
EDIT:
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; Und ja :mrgreen: Willkommen. :dp: |
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 ... ;) ![]() |
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 ;-)
|
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:
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:
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;
Delphi-Quellcode:
eine Readln-anweisung liest dir dabei jeweils eine Zeile der Textdatei ein.
Bla bla
antwort1 Antwort2 Antwort3 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 |
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? |
Re: Anfängerproblem: Array von einem Record aus Datei ausles
gelesen: 6 bezieht sich auf die anzahl der zeilen :wink:
|
Re: Anfängerproblem: Array von einem Record aus Datei ausles
ich trottel :stupid:
|
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 09:59 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