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 Stringlist, test auf vorhandensein einer phrase? (https://www.delphipraxis.net/68371-problem-mit-stringlist-test-auf-vorhandensein-einer-phrase.html)

richard_boderich 28. Apr 2006 23:46


problem mit Stringlist, test auf vorhandensein einer phrase?
 
moin leute,

ich verstehe einfach nicht warum ich bei dieser codezeile eine exeption bekomme. entweder ich mach einen denkfehler, oder es is zu spaet.

Delphi-Quellcode:

var
mose: Tstringlist;
bla:string;
...
begin

bla:='irgendwas';

if mose.IndexOf(bla) = -1 then mose.Add(bla); //wenn string der Variablen bla nicht in mose zu finden ist, so fuege trage es in die stringlist ein

end;
mhhh, der compiler meint noch das mose eventuell nicht initialisiert wurde. weis aber nicht was er damit meint.

vielleicht weis ja einer wo der fehler steckt. schonmal danke fuer eure muehen.

Gruß Richard

Mackhack 28. Apr 2006 23:49

Re: problem mit Stringlist, test auf vorhandensein einer phr
 
Delphi-Quellcode:
  Mose := TStringList.Create;

richard_boderich 28. Apr 2006 23:54

Re: problem mit Stringlist, test auf vorhandensein einer phr
 
oh mann ne echt, das war es.
sollte wohl wirklich schlafen gehn. danke dir vielmals

gruß richard

DGL-luke 29. Apr 2006 11:08

Re: problem mit Stringlist, test auf vorhandensein einer phr
 
dass so eine überprüfung bei einer neu createten (also absolut leeren) Stringlist niucht besonders sinnvoll ist, weißt du aber, oder? ;()

richard_boderich 29. Apr 2006 12:33

Re: problem mit Stringlist, test auf vorhandensein einer phr
 
mhh nein, wenn du weist wie es schneller und besser geht, erklaer es mir doch bitte? :)

Gruß Richard ;)

Hawkeye219 29. Apr 2006 12:42

Re: problem mit Stringlist, test auf vorhandensein einer phr
 
Hallo Richard,

was Lukas dir eigentlich mitteilen wollte: eine leere Stringliste kann das gesuchte Elemente gar nicht enthalten. :wink:
Er ging aber wohl davon aus, daß die Stringliste unmittelbar vor der Überprüfung erzeugt wird.

Du könntest dir mal die Eigenschaft Delphi-Referenz durchsuchenTStringList.Duplicates anschauen. Vielleicht vereinfacht sie ja deinen Code.

Gruß Hawkeye

marabu 29. Apr 2006 12:56

Re: problem mit Stringlist, test auf vorhandensein einer phr
 
Hallo Richard,

wenn die StringList keine doppelten Einträge aufnehmen darf und die assoziierten Objects nicht verwendet werden, dann ist es tatsächlich sinnvoll die Liste als sortierte Liste mit Duplikatabweisung zu führen:

Delphi-Quellcode:
begin
  with TStringList.Create do
  begin;
    Sorted := true;
    Duplicates := dupIgnore;
    Add('Hawkeye');
    Add('Hawkeye');
    ShowMessage(StrToInt(Count));
    Free;
  end;
end;
Grüße vom marabu

richard_boderich 29. Apr 2006 14:09

Re: problem mit Stringlist, test auf vorhandensein einer phr
 
@marabu

ist dein code denn schneller? ist doch eigentlich mehr code?

mein code steht in einer procedure die vielfach aufgerufen wird. kann dabei vorkommen das häufig der selbe string uebergeben wird, der jedoch nicht erwuenscht ist. es sollen nur unterschiedliche strings in die liste. liste.count dient mir dann als zaehler. ich frage welcher code schneller ist,
da ja das durchsuchen der stringlist mit jeden eintrag laenger dauert, und die procedure mehrere tausend mal aufgerufen wird.

momentan denke ich mein version muesste schneller sein, da bei mir nur ein eintrag hinzugefuegt wird, wennn es wirklich nicht vorhanden ist. bei deiner version tust du aber bei jeden aufruf stringlist.add ausfuehren oder?

Gruß richard

marabu 29. Apr 2006 14:31

Re: problem mit Stringlist, test auf vorhandensein einer phr
 
Die Suche ist das teuerste an der Sache. Die Kosten reduziere ich durch Sorted = True wodurch die lineare Suche durch einen binary search ersetzt wird. Und durch die Ausnutzung von Duplicates = dupIgnore kann ich die lines-of-code drücken - weniger Code, weniger Fehler, happy people.

Wenn du was sparen willst, dann müsstest du bei einer sortierten Liste Find() anstelle von IndexOf() verwenden, damit der gefundene insertion point nicht verloren geht - aber dann kannst du auch schon Add() nehmen, weil es genauso arbeitet.

marabu

richard_boderich 29. Apr 2006 17:10

Re: problem mit Stringlist, test auf vorhandensein einer phr
 
@marabu du verstehst nich. der gefundene insertion punkt ist voellig unwichtig fuer mich. nur der test auf bereits vorhanden / nicht vorhanden ist von bedeutung. geht die suche den tatsaechlich schneller mit deinem code? bitte nur eine ja / nein antwort ;)
eigentlich missbrauche ich die stringlist in dem fall nur als array ersatz, da ich irgendwo mal gehoert habe das Tstringlist viel schneller sein soll.

Gruß Richard :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz