Entwickler-Ecke

Sonstiges (Delphi) - Textdatei_anzeigen


abc - Di 13.04.04 17:31
Titel: Textdatei_anzeigen
Hi,
wie kann ich aus einer Textdatei die 1. Zeile in Label1 und
die 2. Zeile in Label2 anzeigen lassen?

z.Bsp.: Wenn ich eine Datei namens Test.txt habe, mit dem Inhalt:
(1.zeile) blabla1
(2.zeile) blabla2

Durch einen klich auf einen Button soll dann die 1. Zeile in Label1
und die 2.Zeile in Label2 dargestellt werden.
Wie mache ich das?

Danke.
Grüße.


Tilo - Di 13.04.04 17:46

Dazu müßte folgender(unfolständuger) code gut sein:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Label1.Caption:=Readln(Textdatei);
 Label2.Caption:=Readln(Textdatei);
end;


Die Textdatei muss beim Starten des Programms geöffnet werden.
Die Textdatei darf erst zum Ende des Programms geschlossen werden, sonst klappt dieser Code nicht.
Ist auch nicht der eleganteste. Für Mehr Labels wurde ich einen komplexeren Code empfehlen. Für 2 bis 5 Labels ist diese Variante noch gerade so zu vertreten.

Moderiert von user profile iconMotzi: Code- durch Delphi-Tags ersetzt.


Delete - Di 13.04.04 22:58

Tilo hat folgendes geschrieben:

Die Textdatei muss beim Starten des Programms geöffnet werden.
Die Textdatei darf erst zum Ende des Programms geschlossen werden, sonst klappt dieser Code nicht.

Nö. Du musst sie nur vor dem Lesen öffnen und man sollte sie nach dem lesen wieder schließen. Das kann auch in der ButtonKlick-Prozedur geschehen.

Desweiteren ist Readln eine Prozedur und keine Funktion:

Delphi-Quelltext
1:
procedure Readln([ var F: Text; ] V1 [, V2, ...,Vn ]);                    


Aber mit einer StringListe (TStringList) kommt er wahrscheinlich schneller zum Ziel. Näheres dazu in der Hilfe unter gleichnamigen Stichwort.


bms - Di 13.04.04 23:21

Den ganzen Tag die gleiche Frage:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('c:\autoexec.bat');

    if sl.Count >=2 then // Prüft ob mindestens 2 Zeilen drinn sind
    begin
      Label1.Caption := sl.Strings[0];
      Label2.Caption := sl.Strings[1];
    end;
  finally
    sl.Free;
  end;
end;