Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Vergleich von Edit und Listbox (https://www.delphipraxis.net/197131-vergleich-von-edit-und-listbox.html)

Rawsche 18. Jul 2018 19:40

Delphi-Version: 5

Vergleich von Edit und Listbox
 
Hi zusammen,

Ich bin Programmier-Einsteiger und hänge gerade an einem Problem.

Ich entwickle derzeit ein kleines Programm, welches auch eine Suchfunktion enthalten soll.

In einer Listbox werden pro Zeile Wörter aufgelistet, die irgendwie zusammengehören (z.B. "Zoo Tiere Eintrittskarten"). In der nächsten Zeile geht es dann um ein anderes Thema. (Ich hoffe, dass ihr versteht was ich meine.) Diese Zeilen werden dann Namen von .txt dateien werden (z.B. "Zoo Tiere Eintrittskarten.txt").

Nun möchte ich durch die Eingabe in ein Edit Schlagworte herraussuchen. Wenn ich mich also nicht mehr genau erinnere, wie eine Datei hieß, dann kann ich einfach nach einem Wort suchen (alos z.B. "Tiere") und die Zeile wird mir z.B. in einem Label angezeigt (z.B. "Schlagwort 'Tiere' befindet sich in der Zeile X mit dem Namen 'Zoo Tiere Eintrittskarten'. ").

Im Grunde soll die Suchfunktion also genau so funktionieren, wie die Suche im Windows-Explorer. Gibt es dafür eine einfache Standartfunktion?

Ich habe bereits versuch selber eine zuschreiben, in dem ich den Inhalt des Edits (also das Schlagwort) in Zeichen zerlegt habe. Diese wollte ich dann nachher mit den Zeichen in der Listbox vergleichen. Allerdings habe ich Probleme beim speichern der einzelnen Buchstaben gehabt. Ich habe es mit dynamsichen Arrays versucht (mir bisher unbekannt). Außerdem hat der Vergleich von Array und Listbox nicht hingehauen und nun bin ich völlig verwirrt. :(


Gibt es für mein Problem vielleicht eine einfach Funktion, die genau diese Suche über Zeichen übernimmt und mir dann die Zeilen ausgeben kann, in der sich die gefunden Wörter befinden? Habt ihr vielleicht alternative Ideen.


Ich hoffe, dass ich mich verständlich ausdrücken konnte und dass ich euch nicht nerve, weil es zu banal ist oder so...


Liebe Grüße und schonmal Dankeschön
Rawsche

Edit: Ich verwende glaube ich Lazarus IDE v1.8.4 . Weiß leider nicht, was das genau bedeutet und ob es euch hilft...

DieDolly 18. Jul 2018 20:22

AW: Vergleich von Edit und Listbox
 
Ungetestet und nur aus dem Kopf. Aber so in etwa müsste es funktionieren. Natürlich muss alles an die eigenen Bedürfnisse angepasst werden.
Das hier soll nur zeigen wie es funktionieren kann.
Delphi-Quellcode:
var
 Suchwort: String;
 Gefunden: Boolean;
begin
 Gefunden := False;
 Suchwort := Edit1.Text;

 for i := 0 to ListBox1.Items.Count -1 do
  begin
   Gefunden := Pos(Suchwort, ListBox1.Items[i]) > 1);

   if Gefunden then
    begin
     Label1.Caption := 'Schlagwort "' + Suchwort + '" befindet sich in der Zeile (i + 1) mit dem Namen "' + ListBox1.Items[i] + '"';

     Break;
    end;
  end;
end;

Rawsche 18. Jul 2018 21:06

AW: Vergleich von Edit und Listbox
 
Danke erstmal.

Ich werde mich morgen mit der Funktion auseinandersetzten.
Gibt es eine Möglichkeit sie auch dafür kompatibel zumachen, dass ein Wort mehrmals vorkommt?

DieDolly 18. Jul 2018 21:11

AW: Vergleich von Edit und Listbox
 
Wie genau meinst du das?
Pos() gibt die erste Position zurück, an der das Suchwort in der Zeichenkette gefunden wurde.

p80286 18. Jul 2018 22:17

AW: Vergleich von Edit und Listbox
 
Du schenkst Dir das Break und gibst die gefudene Zeile in einem Memo aus.
(wäre eine Möglichkeit)

Gruß
K-H

Rawsche 19. Jul 2018 09:51

AW: Vergleich von Edit und Listbox
 
Ich meine, dass es sein kann, dass Wörter mehrmals vorkommen. Die Prozedur sollte also alle Zeilen heraussuchen, in denen das Wort vorkommt und nicht nur die erste.

p80286 19. Jul 2018 12:28

AW: Vergleich von Edit und Listbox
 
Delphi-Quellcode:
var
 Suchwort: String;
 Gefunden: Boolean;
begin
 Gefunden := False;
 Suchwort := Edit1.Text;

 for i := 0 to ListBox1.Items.Count -1 do
  begin
   Gefunden := Pos(Suchwort, ListBox1.Items[i]) > 1);

   if Gefunden then
    begin
     //Label1.Caption := 'Schlagwort "' + Suchwort + '" befindet sich in der Zeile (i + 1) mit dem Namen "' + ListBox1.Items[i] + '"';

     //Break;
    Memo1.Lines.Add('Schlagwort "' + Suchwort + '" befindet sich in der Zeile (i + 1) mit dem Namen "' + ListBox1.Items[i] + '"');

    end;
  end;
end;
@DieDolly
Wollte mich nicht mit Deinen Federn schmücken, aber so scheint es mir am einfachsten.

Gruß
K-H

DieDolly 19. Jul 2018 12:30

AW: Vergleich von Edit und Listbox
 
Kein Problem. Aber du hast auch gleich einen meiner Fehler übernommen.

Korrekt
Delphi-Quellcode:
Memo1.Lines.Add('Schlagwort "' + Suchwort + '" befindet sich in der Zeile ' + IntToStr(i + 1) + ' mit dem Namen "' + ListBox1.Items[i] + '"');

p80286 19. Jul 2018 12:33

AW: Vergleich von Edit und Listbox
 
:oops:
schlunzig

Gruß
K-H

Rawsche 19. Jul 2018 15:37

AW: Vergleich von Edit und Listbox
 
Vielen Dank für eure Hilfe. Ich habe noch einige kleine Sachen eingefügt und jetzt funktioniert alles genau so, wie ich mir das vorgestellt habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 Uhr.
Seite 1 von 3  1 23      

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