Entwickler-Ecke
Dateizugriff - TXT.Datei lesen
Hochhäusl - Sa 29.03.03 13:43
Titel: TXT.Datei lesen
Hi,
ich habe bereits folgenden Code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button3Click(Sender: TObject); var sl: TStringList; zeilennr: integer; begin sl:=TStringList.Create;
try sl.LoadFromFile('c:\beispiel.txt'); for zeilennr:=0 to sl.Count-1 do begin if sl[zeilennr]='Zweite Zeile' then edit1.Text:=sl[zeilennr+1]; end; finally sl.free; end; |
Problem:
Ich hätte gerne, dass er nicht wie hier nach einer Zeile sucht und die nächste ([zeilenr+1]) nach edit1 ausgibt sondern wie oben eine Zeile sucht und alle folgenden Zeilen ( mit Zeilenumbruch) in ein Memo lädt bis z.B. ein ":" oder ";" kommt.
Hochhäusl
BungeeBug - Sa 29.03.03 14:28
Hi ...
dann benutzt doch einfach das Memo dazu.
Quelltext
1: 2:
| Memo1.Lines.LoadFromFile(<Filename>); |
und dann würd ich erste die Zeilen löschen die ich nicht haben will ...
MfG BungeeBug
Alibi - Sa 29.03.03 14:34
Eine Textdatei über ein Memo laden um sowas zu machen, omg...
Man kann auch ganz wunderbar .Delete der TStringList aufrufen.
BungeeBug - Sa 29.03.03 20:05
ja aber er wills ja eh in nen memo haben
wulfskin - Sa 29.03.03 22:29
Weil's du bist ,extra für dich ;):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure LoadText(const FileName, First, Last: String; const AStrings: TStrings); var SL: TStringList; I: Integer; B: Boolean; begin B := False; SL := TStringList.Create; with SL do begin try LoadFromFile(FileName); for I := 0 to Count - 1 do begin if (not B) and (Pos(First, Strings[I]) > 0) then begin B := True; AStrings.Add(Copy(Strings[I], Pos(First, Strings[I]) + Length(First), Length(Strings[I]))); end else begin if Pos(Last, Strings[I]) = 0 then AStrings.Add(Strings[I]) else begin AStrings.Add(Copy(Strings[I], 1, Pos(Last, Strings[I]) - 1)); Break; end; end; end; finally Free; end; end; end; |
Gruß wulfskin!
inselberg - Sa 29.03.03 22:51
also ich mach "sowas" immer wie folgt
Quelltext
1: 2: 3: 4: 5:
| stringlist.loadfromfile
p:=pos("das was ich suche", stringlist.text);
copy(stringlist.text,p,length(stringlist.text)); |
weil stringlist.delete ist ziemlich langsam ... will hoffen dass der "pseudo" code verständlich ist
Moderiert von
Tino: Code-Tags hinzugefügt.
wulfskin - So 30.03.03 01:31
| inselberg hat folgendes geschrieben: |
also ich mach "sowas" immer wie folgt
stringlist.loadfromfile
p:=pos("das was ich suche", stringlist.text);
copy(stringlist.text,p,length(stringlist.text));
weil stringlist.delete ist ziemlich langsam ...
will hoffen dass der "pseudo" code verständlich ist |
Schau mal 20 cm weiter oben ;)
Hochhäusl - Di 01.04.03 18:31
Hi,
danke für eure Antworten!
Ich habe den code ausprobiert und es klappt FAST.
Es werden die Zeilen bis zu einem bestimmten Zeichen kopiert
dies jedoch immer von der 1. Zeile an!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!