Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

sharkx 24. Okt 2003 11:55


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]

Tanadirian 24. Okt 2003 12:31

Re: Problem mit If schleife ...
 
Mit

Delphi-Quellcode:
newlist.Sorted:=True;
newlist.Duplicates:=dupIgnore;
wird das Eintragen von doppelten Strings in eine sortierte Stringlist einfach ignoriert!

mfg Tanadirian

neolithos 24. Okt 2003 12:44

Re: Problem mit If schleife ...
 
Das heißt


IF-Bedingung

Schleifen sind...

- for
- while
- repear .. until

weiter Bedingung:

case

sharkx 24. Okt 2003 12:46

Re: Problem mit If schleife ...
 
hmm, trotz Sorted und duIgnore added er aber doppelte einträge in der ListView?!

Tanadirian 24. Okt 2003 12:59

Re: Problem mit If schleife ...
 
Delphi-Quellcode:
list, newlist : TStrings;
Vielleicht mußt du sie ja auch als TStringList deklarieren? Ich weis nicht ob das so auch ok ist!

mfg Tanadirian

sharkx 24. Okt 2003 13:00

Re: Problem mit If schleife ...
 
Ich habs als StringList deklariert, jedoch added er immer noch die Dupes :/

gekmihesg 24. Okt 2003 13:55

Re: Problem mit If schleife ...
 
das is einfach:

Code:
if liste.IndexOf('string') = -1 then
  liste.add('string');

sharkx 24. Okt 2003 19:55

Re: Problem mit If schleife ...
 
Würde mich nun aber auch mal Interessieren warum er trotz
Code:
var
 newlist : TStringList;
begin
 newlist.Sorted:=True;
 newlist.Duplicates:=dupIgnore;
.......
doppelte Strings added.

APP 24. Okt 2003 20:14

Re: Problem mit If schleife ...
 
Hallo,
vielleicht fehlt
Delphi-Quellcode:
newlist.CaseSensitive := False;

sharkx 24. Okt 2003 20:18

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.
Seite 1 von 2  1 2      

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