Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Optimierung beim einlesen einer txt-Datei


nanashi - So 22.11.09 12:36
Titel: Optimierung beim einlesen einer txt-Datei
Hallo,
als erstes möchte ich mich entschuldigen, falls dieses Thema schonmal genannt wurde und ich es übersehen haben sollte.

2. Das Problem:
Ich schreibe zu Zeit an einem Wörterbuch (englisch-deutsch/deutsch-englisch) und habe eine Textdaitei mit rund 50000 Vokabeln. Diese möchte ich gleich zu Beginn des Programms, sprich durch OnCreate, von einer ListBox einlesen lassen und alphabetisch sortieren.
Allerdings braucht das Programm bei meiner Variante für diese 50000 Wortgruppen rund 2 Minuten.
Hat jemand eine Idee, wie ich das in rund 10 Sekunden oder schneller hinbekommen kann?

Meine Variante:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormCreate(Sender: TObject);
begin
 ListBox1.Items.LoadFromFile('vokabeleng.txt');
 ListBox1.Sorted:=True;
end;

P.s. Ich benutze momentan Delphi 5, falls das eine Rolle spielen sollte.

Vielen Dank schonmal.

Moderiert von user profile iconNarses: Titel geändert.
Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


jaenicke - So 22.11.09 12:58

Hallo und :welcome: im Forum!

Nimm statt der ListBox einfach eine TStringList im Hintergrund, lade die Vokabeln da rein und zeige in der ListBox nur einen Teil davon an. Die kompletten 50.000 kann doch ohnehin niemand darin überblicken.

Auf diese Weise dauert das vielleicht nen paar Millisekunden.


nanashi - So 22.11.09 13:59

Danke! Das mit der TStringList klingt erstma sehr gut. Ich werd versuchen es umzusetzen.
Ich hab allerdings bis jetzt noch nie mit einer TStringList gearbeitet und suche gerade fleißig.
Kannst du mir vielleicht sagen wo ich das bei Delphi 5 finde (?), denn wenn ich das bei der Suchfunktion der Komponenten eingebe findet er immer nur TListBox oder TStringGrid, aber keine TStringList. v.v


JüTho - So 22.11.09 14:07

TStringList ist kein Control, sondern "nur" eine Klasse. Es wird ausschließlich manuell per Code benutzt, aber nicht im Designer.

Die Hilfe reagiert dennoch darauf, wenn du es im Code-Fenster markierst und F1 drückst.

Gruß Jürgen


nanashi - So 22.11.09 14:17

Ach so, gut zu wissen.^^
Ich denke mal damit dürfte ich das Problem lösen können.

Vielen Dank für eure Hilfe!! ^__^