AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wörterbuch Datei

Ein Thema von Delphi-Narr · begonnen am 23. Okt 2009 · letzter Beitrag vom 26. Okt 2009
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#31

Re: Wörterbuch Datei

  Alt 25. Okt 2009, 18:38
Dann musst Du eben nachschauen, ob der gesuchte String enthalten ist. Sei doch mal etwas kreativ.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#32

Re: Wörterbuch Datei

  Alt 25. Okt 2009, 19:18
Delphi-Quellcode:
var
i:integer;
SL:TStringlist ;
Position:integer;
begin
     ListeD.Clear;
     ListeE.Clear;
     Sl:=TStringlist.Create;
     SL.LoadFromFile('C:\Users\Neu.txt');
     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;
              end;
         end;
end;
Klappt bisher ganz gut - dauert nur ewig lange... Kann ich den Suchvorgang im Hintergrund laufen lassen, sodass man etwas neues eingeben kann, während gesucht wird? Oder den Suchvorgang beschleunigen?
Und dann noch eine Sache: Wenn man im linken Feld scrollt, soll im rechten ebenfalls gescrollt werden, damit man nicht in der Zeile verrutscht. ->erledigt
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#33

Re: Wörterbuch Datei

  Alt 25. Okt 2009, 19:37
Also erstmal solltest du bitte mal an deiner Code-formatierung arbeiten

Und um deine Frage zu beantworten kuck mal das an: Application.ProcessMessages

Der Code unten enthält diese Anwendung.

WICHTIG: Es ist nicht ratsam, diese Anweisung nach jedem Schleifendurchlauf aufzurufen, da sonst deine Suchfunktion bestimmt mal 10fach so lange dauert,
da ProcessMessages je nach Situation einiges an Zeit verbrät.

Deswegen ist die Bedingung (i mod 1000) = 0 drin, die dafür sorgt, das ProcessMessages nur alle 1000 Durchläufe aufgerufen wird ... das sollte mehr als genug sein.

Delphi-Quellcode:
var
  i : integer;
  SL : TStringlist;
  Position : integer;
begin
  ListeD.Clear;
  ListeE.Clear;
  Sl:=TStringlist.Create;
  SL.LoadFromFile('C:\Users\Lennart\Desktop\Vokabeltrainer Sonja\Datafiles\cfmdoffsfm-80141116124-9u69a\Neu.txt');
  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;
    end;
    If (i mod 1000) = 0 then Application.ProcessMessages;
  end;
end;
MFG
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#34

Re: Wörterbuch Datei

  Alt 25. Okt 2009, 20:41
Was sind ListeD und ListeE eigentlich?

Womöglich sollte man da man über BeginUpdate/EndUpdate nachdenken.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#35

Re: Wörterbuch Datei

  Alt 25. Okt 2009, 20:50
Ich denke das sind die Listbox-Felder für die Ergebnisse.

MFG
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#36

Re: Wörterbuch Datei

  Alt 25. Okt 2009, 20:52
Die Listen sind Listboxes, ListeD ist die, wo die Deutschen Wörter drinstehen und die andere die mit den Englischen

Also ich möchte, dass OnChange gesucht wird, also beim verändern die aktuelle Suche beendet wird und dafür die neue gestartet wird - mit einem Buchstaben mehr.

Also:

H ->Suche wird gestartet
Dann WÄHREND der Suche noch das a
Suche nach H wird abgebrochen und mit Ha neu gestartet usw. Selbst wenn ich ProcessMessages alle 2 mal durchlaufe, klappt das nicht...

Kann man die Prozeduren nicht irgendwie parallel laufen lassen, sodass ich was eingeben kann (und nicht 5 Sekunden warten muss, bis sich was tut) und der gleichzeitig sucht?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#37

Re: Wörterbuch Datei

  Alt 25. Okt 2009, 22:29
Das Application.ProcessMessages mach ich nie von einer Anzahl mit unbestimmter Zeiabhängig.
Dafür merke ich mir die Startzeit (GetTickCount) und führe dann alle x Millisekunden (100 bis 200) dieses aus.
Dort kann man dann auch mitbekommen, ob sich die Startbedingung geändert hat und beginnt die Suche von Neuem.

Abgesehn davon würde ich diese Liste noch parallel mit einer Index-Hashliste versehn oder, da man hier schön Alphabetisch sortieren kann, alles auf meherere Sublisten verteilen, so daß ich nicht immer alles durchsuchen muß.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#38

Re: Wörterbuch Datei

  Alt 26. Okt 2009, 12:44
Du solltest das dann so machen, dass in der Suchschleife das zu suchende wort sich in jedem durchlauf aus dem editfeld geholt wird.

Außerdem sollte nicht nachdem man einen weiteren Buchstaben ins Feld eingibt, sofort die ganze Suche neu gestartet werden, sondern eben
a) Die momentan laufende angepasse (siehe oben)
b) Die bisher gefundenen Einträge gefiltert werden (wenn der neu eingegebene Buchstabe bisherige Ergebnisse ausschließt)

Das solltest du mit ein wenig Nachdenken lösen können

MFG
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#39

Re: Wörterbuch Datei

  Alt 26. Okt 2009, 13:23
Das mit den bisherigen Ergebnissen filtern hatte ich auch schon überlegt, aber der braucht ja 20 Sekunden, bis er die Suche nach 'H' abgeschlossen hat.
Wenn ich nach 5 Sekunden 'a' drücke, dann sind die Suchergebnisse der letzten 15 Sekunden nicht dabei und der durchsucht nur die bisherigen Funde... Mit dem alphabetisch sortieren guck ich mir mal an...

Wäre es eventuell sinnvoll, die Liste am Anfang einmal zu laden, sodass nicht bei jeder Veränderung eine Liste mir 28000000 Zeichen und 1,5 Mio Zeilen laden muss?!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#40

Re: Wörterbuch Datei

  Alt 26. Okt 2009, 13:46
Zitat von Delphi-Narr:
aber der braucht ja 20 Sekunden,
hast du den Tipp auf Delphi-Referenz durchsuchenBeginUpdate/Delphi-Referenz durchsuchenEndUpdate beachtet?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 Uhr.
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