Entwickler-Ecke

Sonstiges (Delphi) - Delphi Anti-Freeze?


Bulli - Do 13.02.03 12:24
Titel: Delphi Anti-Freeze?
Hi all,
ich habe ein Problem. Und zwar hab ich ein Programm geschrieben (Ein Server und einen Client um genau zu sein), das ein Abbild meiner Platte in eine Stringlist speichert. Wenn nun eine Suchanfrage vom Server kommt wird diese Stringlist nach einem bestimmten Teilstring abgesucht.
Da es sich um mehr als 100.000 Stringeinträge handelt kann man sich vorstellen dauert dies ein wenig und dieser Zeit ist der Client eingefroren, man kann also nicht mehr aktiv agieren. Nun meine frage:
Wie kann man es verhindern das der Client einfriert? Die Indy Komponenete Anti-Freeze ist ja nur für Indy Kompos gedacht.

Wäre dankbar für jede Idee.


Gruß
Bulli


Delete - Do 13.02.03 12:27

Einfachste Antwort: Benutzt die Indys. :mrgreen:

Oder lagere die Abfrage- und Suchaktion in eine separaten Thread aus.


Bulli - Do 13.02.03 14:00

Danke,
ich werde mal gucken ob das nem extra thread funzt.

Bin trotzdem dankbar für weitere Ideen!

greetz
Bulli


Udontknow - Do 13.02.03 14:41

Hi!

Zur Stringsuche:

Ist der Teilstring immer am Anfang? Wenn ja, ist das von entscheidender Bedeutung für die Geschwindigkeit! Dann könntest du nämlich, anstatt jeden String einzeln durchzugehen, einen Algorithmus wie das iterierte Halbieren anwenden, um den String zu lokalisieren, was bei 100.000 Strings gerade mal höchstens 17 Zugriffe benötigen würde. Im Gegensatz zum Worst Case 100.000 Zugriffe ist das der Faktor 5882... :wink:

Zum Client:

Siehe Luckies Kommentar... :wink:

Cu,
Udontknow


Bulli - Do 13.02.03 15:21

Hi,
der Suchstring ist leider nicht immer am Anfang.
Beispiel:
Suchstring "WinNT"
Stringlisteintrag:
"c:\Programme\Microsoft\WinNT"


greetz
Bulli