![]() |
document laden
hi leute ,
weiß einer vielleicht , wie ich ein document laden kann (textdocument) wo z.b. drinne steht: aaaa:dddd gggg:ssss rrrr:vvvv der soll das dann in 2 arrays speichern das vor dem doppelpunkt in der einen das nach dem doppelpunkt in anderem array z.b. aaaa:dddd aaaa im array wort1 an stelle 1 : wort1[1] , und dddd in der array wort2 und auch stelle 1 : wort2[1] gggg:ssss gggg dann : wort1[2] und ssss dann : wort2[2] weiß das jemand? bitte um schnelle hilfe :P Mfg NoobBoob |
Re: document laden
Schau dir mal den Befehl
Delphi-Quellcode:
an, mit seiner Hilfe kannst du nach zeichen oder Zeichenketten suchen.
pos
|
Re: document laden
was bringt das? ^^
also wie soll das mir weiterhelfen? |
Re: document laden
Du suchst in jeder Zeile nach deinem Doppelpunkt, pos gibt dir dann die Position des Doppelpunktes zurück. Alles was vor dieser Position ist, packst du ins erste Array, den Teil danach in dein 2. Array.
|
Re: document laden
ja aber wie geht das?
|
Re: document laden
so vllt...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var f: TextFile; temp: string; n: Integer; s1, s2: array of string; begin n := 1; setLength(s1, 1); setLength(s2, 1); AssignFile(f, 'C:\Test.txt'); Reset(f); while not EOF(F) do begin ReadLN(f, temp); setLength(s1, length(s1)+1); setLength(s2, length(s2)+1); s1[n] := copy(temp, 1, Pos(':', temp)-1); s2[n] := copy(temp, Pos(':', temp)+1, length(temp)-Pos(':', temp)); inc(n); end; CloseFile(f); end; |
Re: document laden
Guten Morgen,
und noch eine Variante:
Delphi-Quellcode:
einen Nachteil hat das Verfahren, in den Texten dürfen keine Leerzeichen enthalten sein.
procedure TForm1.Button1Click(Sender: TObject);
var liste: TStringList; liste2: TStringList; Array1: array [0..5] of String; Array2: array [0..5] of string; i,j:Byte; begin liste := TStringList.create; liste2 := TStringlist.create; liste2.Delimiter:=':'; liste.LoadFromFile('d:\test.dat'); //enthält den ganzen Text liste2.DelimitedText:=liste.Text; // enthält pro Zeile einen Teil des Textes // den Teil kann man sicherlich noch eleganter lösen i:=0; j:=0; while i <= liste2.Count-1 do begin Array1[j]:=liste2.strings[i]; Array2[j]:= liste2.strings[i+1]; j:=j+1; i:=i+2; end; // Ausgabe in ein Memo for i:=0 to high(array1) do memo1.Lines.add(array1[i]); liste.Free; liste2.Free; end; aaaaa:bbbbb das geht aa aa:bbbbb das geht in die Hose Leerzeichen sind in dem Falle durch ein anderes Zeichen zu ersetzen. Grüße Klaus |
Re: document laden
Hallo,
ich hätte auch noch eine Alternative: Statt Delimiter die Eigenschaft NameValueSeparator strapazieren. Dann kann man auf die einzelnen Werte so zugreifen, als ob sie in zwei Arrays gespeichert wären. Sie sind aber nur in einer StringList gespeichert:
Delphi-Quellcode:
Grüße vom marabu
procedure LoadNamedValues(s: TStrings; fn: TFileName);
var i: Integer; begin s.LoadFromFile(fn); s.NameValueSeparator := ':'; for i := 0 to Pred(s.Count) do ShowMessage(Format('%d: %s <-> %s', [s.Names[i], s.ValueFromIndex[i]])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 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 by Thomas Breitkreuz