AGB  ·  Datenschutz  ·  Impressum  







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

Text aus .txt auslesen

Ein Thema von Iscye · begonnen am 5. Okt 2014 · letzter Beitrag vom 5. Okt 2014
Antwort Antwort
Iscye

Registriert seit: 5. Okt 2014
2 Beiträge
 
#1

Text aus .txt auslesen

  Alt 5. Okt 2014, 13:58
Delphi-Version: 6
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:
Assignfile(RB, 'Raumschiff_bewegen.txt');
  Reset(RB);
  while not eof(RB) do
  begin
    readLn(RB, RaumschiffBewegen);
  end;
  closefile(RB);
Kompletter Code bisher (sehr viel ausgeklammert):

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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#2

AW: Text aus .txt auslesen

  Alt 5. Okt 2014, 14:10
Delphi-Quellcode:
S := 'abc';
S := 'def';
if S = 'abcdefthen
Was muß man wohl machen, damit hier in der Variable am Ende alles drin steh?


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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Iscye

Registriert seit: 5. Okt 2014
2 Beiträge
 
#3

AW: Text aus .txt auslesen

  Alt 5. Okt 2014, 14:58
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.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Text aus .txt auslesen

  Alt 5. Okt 2014, 16:28
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#5

AW: Text aus .txt auslesen

  Alt 5. Okt 2014, 20:18
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:13 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