AGB  ·  Datenschutz  ·  Impressum  







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

Suchen in einer Liste

Ein Thema von Alex_ITA01 · begonnen am 12. Okt 2004 · letzter Beitrag vom 13. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

Suchen in einer Liste

  Alt 12. Okt 2004, 10:36
moin moin...
ich wollte mal wissen, wie z.B. Winamp die Suchfunktion ermöglicht!?
Also ich habe eine Liste (voll mit irgendwelchen Daten) und gebe jetzt ein Buchstabe ein und nun wird geprüft, ob dieser Buchstabe in dem ersten,zweiten,dritten... Listeneintrag vorkommt.
Also genau wie bei Winamp die Liedersuche...
Hoffe ihr habt da eine Lösung!?

MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Suchen in einer Liste

  Alt 12. Okt 2004, 10:42
Hi Alex,

wenn du z.B. eine ListView hast, dann könnte der Code so aussehen:

Delphi-Quellcode:
procedure FindStringInListView(Str: String; var a: array of Integer);
var
  bFound: Boolean;
  i, iFound, j: Integer;
begin
  iFound := 0;
  SetLength(a, ListView1.Items.Count);
  for i := 0 to ListView1.Items.Count-1 do
  begin
    bFound := Pos(Str, ListView1.Items[i].Caption) > 0;
    j := 0;
    while (j < ListView1.Items[i].Subitems.Count) and not bFound do
    begin
      bFound := Pos(Str, ListView1.Items[i].Subitems[j]) > 0;
      Inc(j);
    end;
    if bFound then
    begin
      Inc(iFound);
      a[iFound-1] := i;
    end;
  end;
  SetLength(a, iFound);
end;
Im array "a" befinden sich anschließend die Indizes aller Elemente, auf die die Suchkriterien zutreffen. Gesucht wird in der Caption und in den einzelnen SubItems.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
_Sebastian_

Registriert seit: 22. Jul 2004
Ort: Lübeck
72 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Suchen in einer Liste

  Alt 12. Okt 2004, 10:42
ich hab in winamp die suche zwar noch nie benutzt, aber einträge in einer liste suchen funktioniert mittels
IndexOf() eigentlich ganz gut.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#4

Re: Suchen in einer Liste

  Alt 12. Okt 2004, 10:51
Moin alcaeus...
danke für den source.
Ich verwende allerdings eine ListBox in der viele Daten stehen.Aber ich denke, das ich dein Source dahingehend anpassen kann
(hoff ich *g*)

Danke auch an Sebastian!

MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Suchen in einer Liste

  Alt 12. Okt 2004, 11:44
Hi Alex,

so sieht der Code für eine ListBox aus. Ich habe ihn auch dahingehend erweitert, dass nicht nur nach dem Vorkommen des Strings gesucht wird. Ist iFlag 0, so werden alle Datensätze zurückgeliefert, welche den String Str enthalten. Ist es jedoch ungleich 0, so werden nur Datensätze zurückgeliefert, welche mit Str beginnen.
Delphi-Quellcode:
procedure FindStringInListBox(Str: String; var a: array of Integer; iFlag: Integer);
var
  bFound: Boolean;
  i, iFound: Integer;
begin
  iFound := 0;
  SetLength(a, ListBox1.Count);
  for i := 0 to ListBox1.Count-1 do
  begin
    if iFlag = 0 then
      bFound := Pos(Str, ListBox1.Items[i]) > 0
    else
      bFound := Copy(ListBox1.Items[i], 1, Length(Str)) = Str;
    if bFound then
    begin
      Inc(iFound);
      a[iFound-1] := i;
    end;
  end;
  SetLength(a, iFound);
end;
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#6

Re: Suchen in einer Liste

  Alt 12. Okt 2004, 11:46
Danke schön!!!
Hat mir sehr weitergeholfen


MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#7

Re: Suchen in einer Liste

  Alt 12. Okt 2004, 13:09
hi alcaeus,
ich habe folgendes Problem:
an der Stelle mit dem SetLength meckert der Compiler immer: Inkompatible Typen

SetLength(a, Liste.Count);
...
SetLength(a, iFound);

woran liegt das?

MFg Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#8

Re: Suchen in einer Liste

  Alt 12. Okt 2004, 13:45
ich habe das Problem mal in einem kleinen Beispielprog dargstellt...
Ich hoffe ihr könnt mir irgendwie helfen.
Versucht einfach mal F9 zu drücken...
MFG Alex
Angehängte Dateien
Dateityp: zip setlength.zip (3,4 KB, 8x aufgerufen)
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: Suchen in einer Liste

  Alt 12. Okt 2004, 15:29
Hi Alex,

du musst den folgenden Typen deklarieren:
type TIntArray = array of Integer; Den Header musst du dann noch ändern in
function FindStringInListBox(Str: String; var a: TIntArray; iFlag: Integer): Integer; Und vor dem Ende der Funktion fügst du noch ein: Result := iFound; Anscheinend wird ein als array übergebener Parameter nicht als dynamisches Array behandelt. Mit dem Umweg über den Typ funktioniert es aber. Und die Funktion gibt jetzt auch noch die Anzahl der gefundenen Einträge zurück, so dass diese nicht immer über Length(a) herausgefunden werden muss.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#10

Re: Suchen in einer Liste

  Alt 13. Okt 2004, 10:47
moin alcaeus,
ich bin entweder zu blöd (das hoffe ich mal nicht *g*) oder das Programm geht einfach nicht.
habe deine Änderungen reingebaut aber ich bekomme in diesem beispiel (siehe anhang) nicht das gewünschte ergebnis...
Kannst du mir mal helfen?

MFG Alex
Angehängte Dateien
Dateityp: zip stringsuche.zip (3,6 KB, 7x aufgerufen)
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:15 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