Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Wörterbuch Datei (https://www.delphipraxis.net/142209-woerterbuch-datei.html)

Delphi-Narr 26. Okt 2009 13:55

Re: Wörterbuch Datei
 
Delphi-Quellcode:
var
i:integer;
Position:integer;
start,stop:longint;
begin
     ListeD.Clear;
     ListeE.Clear;
     SucheD.BeginUpdate;
     try
     for i:=0 to SL.Count-1 do
         begin                                        
              if Odd(i)=False then begin
              Position:=Pos(SucheD.text,SL[i]);
              if Position<>0 then begin
                 ListeD.Items.Add(SL[i]);
                 ListeE.Items.Add(SL[i+1]);
                 end;
              begin
                   start := gettickcount;
                   repeat
                   stop := gettickcount;
                   application.processmessages;
                   until (stop - start ) >= 100;
                 end;
              end;
         end;
     finally
     SucheD.EndUpdate;
     end;
end;
Ich hab keine Erfahrung mit Begin bzw. EndUpdate... Wäre das so richtig (hab auch noch gettickcount eingebaut)
Mein Delphi kennt das nämlich nicht...

DeddyH 26. Okt 2009 13:57

Re: Wörterbuch Datei
 
Du musst Begin-/EndUpdate auf die Listen anwenden, die verändert werden. SucheD ist das nicht :zwinker:

Delphi-Narr 26. Okt 2009 13:59

Re: Wörterbuch Datei
 
Also statt SucheD ListeD hinschreiben?
Kennt er trotzdem nicht. :(

DeddyH 26. Okt 2009 14:04

Re: Wörterbuch Datei
 
BeginUpdate und EndUpdate sind Methoden von TStrings. Welche Property Deiner Listboxen sind TStrings? Könnte das Items sein? Wie muss die Zeile also lauten?

himitsu 26. Okt 2009 14:14

Re: Wörterbuch Datei
 
und hier machst du JEDESMAL EINE PAUSE VON 100 ms
Delphi-Quellcode:
start := gettickcount;
repeat
  stop := gettickcount;
  application.processmessages;
until (stop - start ) >= 100;
und nicht ALLE 100 ms
Delphi-Quellcode:
start := gettickcount;
{schleifenstart}

  ...

  if gettickcount - start >= 100 then
  begin
    application.processmessages;
    start := gettickcount;
  end;
{schleifenende}

Delphi-Narr 26. Okt 2009 14:21

Re: Wörterbuch Datei
 
Hm... Wäre es nicht sinnvoll, die Processmessages bei jeder Schleife zu durchlaufen?


Also ich hab mal einen Versuch gemacht:

Ich habe die SL geladen und dann in ein MEmo geladen (1,5 Mio Zeilen)-
hab damit gerechnet, dass es länger dauert, aber nicht soooo lange. Nach 2 1/2 Minuten hab ich das ganze dann abgebrochen.
Deshalb: Ist es möglich, das ganze ein wenig schneller zu laden? Mit Notepad++ dauert es 5 Sekunden und die Zeilen sind da (Programm muss schon offen sein, sonst knapp 15 Sekunden).
Da ich beim Suchen ja nicht 1,5 Mio Zeilen laden muss, sondern eher so um die 50, sollten 5 Sekunden schon möglich sein...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.
Seite 5 von 5   « Erste     345   

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