![]() |
Delphi-Version: 6
Text aus .txt auslesen
Hallo
ich habe eine Problem beim auslesen eines Textes. Wenn ich den Text im Moment auslese wird dabei die erste Zeile ausgelesen dann die Zweite. Dabei wird aber die Zweite über die Erste überschrieben. Am Ende wird trotzdem nichts in meinem Label angezeigt. Das muss ich irgendwie umgehen sodass der komplette Text zum Schluss in mein Array gespeichert werden kann und ich dieser dann später in einem Label angezeigt wird. Auslesen:
Code:
Kompletter Code bisher (sehr viel ausgeklammert):
Assignfile(RB, 'Raumschiff_bewegen.txt');
Reset(RB); while not eof(RB) do begin readLn(RB, RaumschiffBewegen); end; closefile(RB);
Code:
Const Anzahl_Text = 5;
Type tTextArray = Array [1..Anzahl_Text]of string; VAR AktText:Integer; TextArray: tTextArray; Einleitung : string; RaumschiffBewegen : string; RohstoffeVerladen : string; FighterHerstellen : string; FightModus : string; procedure THilfeForm.FormCreate(Sender: TObject); VAR E : Textfile; RB : Textfile; RV : Textfile; FH : Textfile; FM : Textfile; begin //Initialisierung Texte TextArray[1] := 'Um ein neues Spiel zu starten klickt man auf Neu (im Moment nur diese Option möglich'; TextArray[2] := RaumschiffBewegen; TextArray[3] := 'wafafwatagRohstoffeVerladen'; TextArray[4] := 'sfaksfadagFighterHerstellen'; TextArray[5] := 'sfdagkagdjkgdjFightModus'; AktText := 1; TextLabel.Visible := true; TextLabel.Caption := ' '; TextLabel.Caption := TextArray[AktText]; VorButton.visible := true; ZurueckButton.Visible := false; {Assignfile(E, 'Einleitung.txt'); Reset(E); while not eof(E) do begin readLn(E,Einleitung); end; closefile(E); TextLabel.Caption :=Einleitung; } Assignfile(RB, 'Raumschiff_bewegen.txt'); Reset(RB); while not eof(RB) do begin readLn(RB, RaumschiffBewegen); end; closefile(RB); {Assignfile(RV, 'Rohstoffe_verladen.txt'); Reset(RV); while not eof(RV) do begin readLn(RV, RohstoffeVerladen); end; closefile(RV); Assignfile(FH, 'Fighter_herstellen.txt'); Reset(FH); while not eof(FH) do begin readLn(FH, FighterHerstellen); end; closefile(FH); Assignfile(FM, 'Fight_Modus.txt'); Reset(FM); while not eof(FM) do begin readLn(FM, FightModus); end; closefile(FM); } end; procedure THilfeForm.VorButtonClick(Sender: TObject); begin if aktText = 5 then ZurueckButton.Visible := true else begin aktText := aktText + 1; TextLabel.Caption := TextArray[aktText]; TextLabel.Visible := true; end; end; procedure THilfeForm.ZurueckButtonClick(Sender: TObject); {VAR TextArray:tTextArray; i : Integer;} begin {aktText := aktText - 1; TextLabel.Caption := ' '; i := aktText; TextLabel.Caption := TextLabel.Caption + TextArray[i];} end; |
AW: Text aus .txt auslesen
Delphi-Quellcode:
Was muß man wohl machen, damit hier in der Variable am Ende alles drin steh?
S := 'abc';
S := 'def'; if S = 'abcdef' then Wieso gibt es da so viele globale Variablen? Und warum so viele Textfile-Variablen, wenn die alle nur nacheinander verwendet werden und eine Einzige somit reichen würde? |
AW: Text aus .txt auslesen
Sorry ich arbeite noch nicht so lange mit Delphi.
Und ich hab die ganzen Variablen noch nicht zusammengefasst, da es für mich persönlich so erstmal übersichtlicher ist. |
AW: Text aus .txt auslesen
Für sowas gibt's auch die TStringList class:
Beispiel:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var SL: TStringList; FileName: string; begin FileName := ExtractFilePath(ParamStr(0)) + 'Raumschiff_bewegen.txt'; SL := TStringList.Create; try if FileExists(FileName) then SL.LoadFromFile(FileName); // StringList aus Datei laden; Memo1.Lines.Assign(SL); // Z.B. Ganze Datei in ein Memo laden; Label1.Caption := SL.Text; // Z.B. Ganze Datei als string in ein Label laden; if SL.Count > 0 then ShowMessage(SL[0]); // Die erste Zeile anzeigen; finally SL.Free; end; end; procedure TForm2.Button2Click(Sender: TObject); var SL: TStringList; FileName: string; begin FileName := ExtractFilePath(ParamStr(0)) + 'Raumschiff_bewegen_Neu.txt'; SL := TStringList.Create; try SL.AddStrings(Memo1.Lines); // Z.B. Ganzen MemoText der StringList hinuzügen; SL.Add(Label1.Caption); // Z.B. Label.Caption der StringList hinuzügen; SL.Add('I like TStringList.'); // Eine weitere Zeile anhängen; SL.SaveToFile(FileName); // StringList in Datei speichern; finally SL.Free; end; end; |
AW: Text aus .txt auslesen
Die TStringList ist natürlich beim Auslesen einer kompletten Datei und gleichzeitigem Zerlegen in einzelne Zeilen von Vorteil.
Aber das Grundproblem ist dennoch eine andere Stelle. Wenn man mehrere Textstrücke zu einer Variable zusammensetzen will, dann sollte man das auch "zusammensetzen" und nicht jedesmal "überschreiben"! TStringList.Text macht das intern ja auch und setzt alle Zeilen zu einem String zusammen. :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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