![]() |
Re: Problem mit If schleife ...
@sharkx: Nutze mal statt der [code]-Tags die [delphi]-Tags.
Danke, ...:cat:... |
Re: Problem mit If schleife ...
Hallo sharkx,
kann es sein, dass Du diese Funktion mehrmals hintereinander aufrufst? Wenn ja, dann ist klar, dass Deine Funktion immer die gleichen Ergebnisse mehrfach als String zurückgibt. (Du zerstörst die Stringlist ja jedesmal, und erzeugst sie immer neu) Ansonsten scheint die Funktion zu Funken (bei einmaligem Aufruf). |
Re: Problem mit If schleife ...
Die funktion steht in einer endlosschleife, ja ...
Hmmm, wie löse ich dann am besten das Problem? |
Re: Problem mit If schleife ...
Indem Du die Stringliste ausserhalb Deiner Funktion erzeugst.
|
Re: Problem mit If schleife ...
hallo,
App, irgendwie versteh ich das nicht so ganz. Ich soll die StringList auserhalb der Funktion erzeugen. Wo bzw wie soll ich die erzeugen? |
Re: Problem mit If schleife ...
Hallo sharkx,
falls ich Dich richtig verstanden habe, dann meinte ich in etwa so:
Delphi-Quellcode:
Das ist nur ein Ansatz, Du kannst "newlist" auch als Parameter mitgeben,
PROCEDURE TForm1.Button3Click(Sender: TObject);
VAR NewList : TStringList; j : Integer; // logfile auf "[Time] [Tag] und String" durchsuchen FUNCTION ReadString(path: STRING): STRING; CONST searchstring = '[bla] + blaa bluuuub:'; VAR list : TStringList; z1, datum, release : STRING; i, p1, p2 : integer; BEGIN list := 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); 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; END; BEGIN NewList := TStringList.Create; TRY // StringList sortieren und keine doppelten Strings hinzufügen NewList.Sorted := True; NewListt.Duplicates := dupIgnore; NewList.CaseSensitive := False; // Deine "Endlosschleife" FOR j := 0 TO 10 DO BEGIN Memo1.Clear; Memo1.Lines.add(ReadString('C:\LB.txt')); END; beep; FINALLY NewList.Free; END; END; wenn Deine Funktion keine Unter-Funktion sein soll. Oder Du kannst "newlist" global deklarieren... Auf alle Fälle sollte deine Funktion immer mit der Stringliste arbeiten die vorher einmal erzeugt wurde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 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