![]() |
Loadfile.. scan for block.. add to TStringlist
ok es wird ein file geladen mit TXT inhalt.
der gesamte text des files wird in eine TStringList hinzugeführt, und dann wird nach einem block gesucht. also:
Delphi-Quellcode:
das file:
var
filedata, datacontent : tStringlist; databegin, dataend :integer; begin If openDialog1.Files = nil then showmessage('no file loaded dumbass') else begin filedata.Create; filedata.AddStrings(opendialog1.Files); databegin:=filedata.IndexOf(edit1.Text)+1; dataend:=filedata.IndexOf(edit2.Text)-1;
Code:
edit1.text = :::Begin:::
bla bla bla haha jajaj..
nööö dummer text.. bla bla bla :::Begin::: uhhh ja.. dass ist interesant dass will ich haben :::End::: noch mehr text edit2.text = :::End::: gut jetzt dass problem: wie kann ich alles wass zwichen :::begin::: und :::end::: in die "datacontent" TString liste eifügen? //many thanks in advance :D |
Re: Loadfile.. scan for block.. add to TStringlist
Zitat:
Delphi-Quellcode:
CU mr2
filedata := TStringList.Create;
try filedata.LoadFromFile(opendialog1.FileName); while (Pos(':::Begin:::', filedata[0]) = 0) do filedata.Delete(0); while (Pos(':::End:::', filedata[Pred(filedata.Count)]) = 0) do filedata.Delete(Pred(filedata.Count)); // eigentliche Verarbeitung der Daten (geht jetzt direkt in FileData - kopieren ist unnötig) finally FreeAndNil(filedata); end; |
Re: Loadfile.. scan for block.. add to TStringlist
danke erstmals.. doch ein problem:
in dem file wird es mehrere solcher positionen geben. ich denke mal mit einem anderen anfang und ende, wie z.b. :::begin1::: :::end1::: :::begin2::: :::end2::: usw. (wede ich verscheinlich mit integer to string conversion machen oder so...) daher ist kopeiren nicht unnötig - sorry hätte ich ehr sagen sollen. und ne nebenfrage: warum würde
Delphi-Quellcode:
net so funktioniren bzw mir um di ohren fliegen?
filedata.Create;
filedata.AddStrings(opendialog1.Files); |
Re: Loadfile.. scan for block.. add to TStringlist
Zitat:
Ausserdem ist filedata.Create nicht möglich, da filedata ja noch nich erstellt ist und deshalb auch keine funktionierende .create hat ( ein Teufelskreis :-) ). |
Re: Loadfile.. scan for block.. add to TStringlist
ok.. danke!
zum kopieren: vieleicht mit einer for to schleife? |
Re: Loadfile.. scan for block.. add to TStringlist
Hallo,
also erstmal solltest Du Objektinstanzen immer mit T<irgendwas>.Create erzeugen:
Delphi-Quellcode:
Der Rest sollte so funktionieren:
filedata := TStringList.Create;
Delphi-Quellcode:
CU mr2
datacontent := nil;
filedata := nil; try datacontent := TStringList.Create; filedata := TStringList.Create; filedata.LoadFromFile(opendialog1.FileName); repeat i := 0; while (Pos(':::Begin:::', filedata[i]) = 0) and (i <= Pred(filedata.Count)) do Inc(i); Inc(i); while (Pos(':::End:::', filedata[i]) = 0) and (i <= Pred(filedata.Count)) do begin datacontent.Add(filedata[i]); Inc(i); end; until (i >= Pred(filedata.Count)); // eigentliche Verarbeitung der Daten finally FreeAndNil(filedata); FreeAndNil(datacontent); end; |
Re: Loadfile.. scan for block.. add to TStringlist
t(...).create - hmm die einen nehmen es raus die anderen lassen es drin...
und dann ist da noch: [quote="Skyruner2"]doch ein problem: in dem file wird es mehrere solcher positionen geben. ich denke mal mit einem anderen anfang und ende, wie z.b. :::begin1::: :::end1::: :::begin2::: :::end2::: usw. (wede ich verscheinlich mit integer to string conversion machen oder so...) daher ist kopeiren nicht unnötig - sorry hätte ich ehr sagen sollen. quote] |
Re: Loadfile.. scan for block.. add to TStringlist
Hallo,
ich glaube nicht, dass jemand das T... vor dem Create weglässt. Für das andere Problem brauchst Du einfach nur ein zweite Variable (j) jeweils nur einmal in der Schleife zu Incremetieren und mittels IntToStr(j) den String dynamisch zusammen zu bauen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 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-2025 by Thomas Breitkreuz