Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit If schleife ... (https://www.delphipraxis.net/10741-problem-mit-if-schleife.html)

sakura 24. Okt 2003 19:22

Re: Problem mit If schleife ...
 
@sharkx: Nutze mal statt der [code]-Tags die [delphi]-Tags.

Danke,
...:cat:...

APP 24. Okt 2003 19:34

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).

sharkx 24. Okt 2003 19:35

Re: Problem mit If schleife ...
 
Die funktion steht in einer endlosschleife, ja ...


Hmmm, wie löse ich dann am besten das Problem?

APP 24. Okt 2003 19:37

Re: Problem mit If schleife ...
 
Indem Du die Stringliste ausserhalb Deiner Funktion erzeugst.

sharkx 25. Okt 2003 10:28

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?

APP 25. Okt 2003 15:03

Re: Problem mit If schleife ...
 
Hallo sharkx,

falls ich Dich richtig verstanden habe, dann meinte ich in etwa so:

Delphi-Quellcode:
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;
Das ist nur ein Ansatz, Du kannst "newlist" auch als Parameter mitgeben,
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.
Seite 2 von 2     12   

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