![]() |
Problem mit If schleife ...
Hallo, im folgenden Source lese ich eine Textdatei aus, bestimmte Strings möchte ich ( Wenn sie nicht schon in der ListView stehen ) in ein listView adden. Jedoch scheitere ich, warum auch immer *gg , an der abfrage ob dieser String schon geaddet wurde.
Delphi-Quellcode:
// logfile auf "[Time] [Tag] und String" durchsuchen
function ReadString(path : string) : string; const searchstring = '[blaaaa] + bluuuub bluuuub:'; var gefunden : boolean; list, newlist : TStrings; z1,datum,release : string; i,a,p1,p2 : integer; begin list := TStringList.Create; newlist := TStringList.Create; list.LoadFromFile(path); // Release parsen for i := 0 to list.Count-1 do begin p1 := Pos(searchstring,list[i]); if p1 = 0 then continue; z1 := list.Strings[i]; p1 := Pos('[',z1); // first Time String auslesen p2 := Pos(']',z1); // last Time String auslesen datum := Copy(z1,p1+1,(p2-p1)-1); p1 := Pos(searchstring,z1); z1 := Copy(z1,p1+length(searchstring)+1,length(z1)); p2 := Pos(' ',z1); release := Copy(z1,1,p2-1); // Release schon geaddet? begin for a := 0 to list.Count-1 do if newlist.Count <> 0 then begin if newlist.Strings[a] = (datum+' '+release) then begin gefunden := true; break; end; gefunden := false; end; if not gefunden then newlist.Add(datum+' '+release) end; result := newlist.CommaText; list.free; newlist.free; end; end; thnx für eure hilfe [edit=sakura] Code durch [Delphi]-Tags ersetzt. Mfg, sakura[/edit] |
Re: Problem mit If schleife ...
Mit
Delphi-Quellcode:
wird das Eintragen von doppelten Strings in eine sortierte Stringlist einfach ignoriert!
newlist.Sorted:=True;
newlist.Duplicates:=dupIgnore; mfg Tanadirian |
Re: Problem mit If schleife ...
Das heißt
IF-Bedingung Schleifen sind... - for - while - repear .. until weiter Bedingung: case |
Re: Problem mit If schleife ...
hmm, trotz Sorted und duIgnore added er aber doppelte einträge in der ListView?!
|
Re: Problem mit If schleife ...
Delphi-Quellcode:
Vielleicht mußt du sie ja auch als TStringList deklarieren? Ich weis nicht ob das so auch ok ist!
list, newlist : TStrings;
mfg Tanadirian |
Re: Problem mit If schleife ...
Ich habs als StringList deklariert, jedoch added er immer noch die Dupes :/
|
Re: Problem mit If schleife ...
das is einfach:
Code:
if liste.IndexOf('string') = -1 then
liste.add('string'); |
Re: Problem mit If schleife ...
Würde mich nun aber auch mal Interessieren warum er trotz
Code:
doppelte Strings added.
var
newlist : TStringList; begin newlist.Sorted:=True; newlist.Duplicates:=dupIgnore; ....... |
Re: Problem mit If schleife ...
Hallo,
vielleicht fehlt
Delphi-Quellcode:
newlist.CaseSensitive := False;
|
Re: Problem mit If schleife ...
Nein, habe ich auch schon getestet. ich poste nochmal die ganze funktion, vieleicht liegt der fehler ja sonstwo ...
Delphi-Quellcode:
// logfile auf "[Time] [Tag] und String" durchsuchen
function ReadString(path : string) : string; const searchstring = '[bla] + blaa bluuuub:'; var list, newlist : TStringList; z1,datum,release : string; i,p1,p2 : integer; begin list := TStringList.Create; newlist := TStringList.Create; // StringList sortieren und keine doppelten Strings hinzufügen newlist.Sorted := True; newlist.Duplicates := dupIgnore; newlist.CaseSensitive := False; list.LoadFromFile(path); // Release parsen for i := 0 to list.Count-1 do begin p1 := Pos(searchstring,list[i]); if p1 = 0 then continue; z1 := list.Strings[i]; p1 := Pos('[',z1); p2 := Pos(']',z1); datum := Copy(z1,p1+1,(p2-p1)-1); p1 := Pos(searchstring,z1); z1 := Copy(z1,p1+length(searchstring)+1,length(z1)); p2 := Pos(' ',z1); release := Copy(z1,1,p2-1); newlist.Add(datum+' '+release) end; result := newlist.CommaText; list.free; newlist.free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 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