Entwickler-Ecke

Dateizugriff - daten von textdatei holen


sparrow - Fr 01.11.02 16:16
Titel: daten von textdatei holen
hallo !

wie kann ich wenn ich auf einen button klicke daten von einer bestimmten zeile aus einer textdatei holen ?

würde mich über hilfen und links dazu sehr freuen.

mfg,
sparrow


O'rallY - Fr 01.11.02 17:05

Mittels der TStringList kannst du auf die einzelnen Zeilen leicht zugreifen. Handhabeung ist genau wie beim TMemo unt TRichEdit, da diese Kompos beide TStrings benutzen.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
   afile: TStrings;
begin
   afile := TStringList.Create;
   afile.LoadFromFile('C:\datei.txt');
   ShowMessage(afile[2]); //gibt dritte Zeile aus
   afile.free;
end;


Delete - Fr 01.11.02 17:10

Wo ist da der Ressourcen-Schutz mit try-finally?


O'rallY - Fr 01.11.02 19:12

Ok, hätt mir mehr Mühe geben können, aber es geht ja nur ums Prinzip, ein vollkommen "durchgestylter" Code ist denke ich, nicht umbedingt notwendig. Aber um dich ein wenig zu beruhigen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var 
   afile: TStrings; 
begin 
   afile := TStringList.Create; 
   try
      afile.LoadFromFile('C:\datei.txt'); 
      ShowMessage(afile[2]); //gibt dritte Zeile aus 
   finally   
      afile.free;
   end;
end;


Ok? :wink:


sparrow - Fr 01.11.02 20:23

danke ! ich denke das hilft mir schonmal !


sparrow - Fr 01.11.02 20:43

hmm. wo ist da der fehler :


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
type
  TForm1 = class(TForm)
    procedure TForm1.FormClick(Sender: TObject);
  private
  public
end;

procedure TForm1.FormClick(Sender: TObject);
var 
   afile: TStrings; 
begin 
   afile := TStringList.Create; 
   try 
      afile.LoadFromFile('C:\datei.txt');
      ShowMessage(afile[2]);
   finally
      afile.free;
   end;

end;


Die Datei wird nämlich nicht compiliert.


Delete - Sa 02.11.02 04:59


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringlist;
begin
  sl := TStringlist.Create;
  try
    sl.LoadFromFile('c:\autoexec.bat');
    Showmessage(sl.Strings[2]);
  finally
    sl.Free;
  end;
end;


sparrow - Sa 02.11.02 13:46

Es kommt beim compilieren aber immer noch die meldung:
Deklaration erwartet, aber Dateiende gefunden.


Delete - Sa 02.11.02 14:23

Dieser Fehler steckt dann aber im Rest deiner Unit und hat mit den hier geposteten Lösungen nichts zu tun, da diese -auf die Schnelle betrachtet!- syntaktisch korrekt sind.


Delete - Sa 02.11.02 16:09

Meine Lösung ist nicht nur syntaktisch korrekt, jetzt kommt der Hammer: Sie funktioniert sogar. :shock: *ohwunder*


LCS - Sa 02.11.02 16:09

Hi
ich tippe mal auf die fehlende Unit IniFiles in der Uses-Klausel.

Gruss Lothar

----
Hurra. Zeitgleich. Wenn man das mit Absicht machen wollte, würde das garantiert nicht klappen :mrgreen:


LCS - Sa 02.11.02 17:36

Das darf nicht wahr sein!
Wir brauchen unbedingt nen Filter der peinliche Antworten wie die obige sofort unterdrückt. :oops: Das kommt davon, wenn man 3 Sachen gleichzeitig machen will :autsch:

IniFiles hat natürlich gar nix damit zu tun. Das gehört ganz woanders hin.

Gruss Lothar


Delete - Sa 02.11.02 17:38

Du hast mich schon in tiefste Verzweifelung gestürzt, was ich denn jetzt schon wieder übersehen hätte.

Aber laß doch bitte den Smily in Ruhe, der kann doch nun gar nichts dafür. :mrgreen: