Autor |
Beitrag |
Mindforce
      
Beiträge: 358
Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
|
Verfasst: Sa 11.10.08 16:11
HAllo Cmommunity,
seit letzter Zeit suche ich sehr viel im Forum herum und habe folgendes vor:
- Ich habe ein Edit, indem ich einen Suchbegriff eingebe. Dort gebe ich z.B. "hal" ein.
- In meiner ListBox stehen z.B. "Hallo" nächste Zeile "Moin" .. "Hallö" .. "Halle" etc.
- Wenn ich dann auf Suchen drücke, soll er mir alle 3 Hallo-Sorten auflisten, da "Hallo", "Hallö" und "Halle" mit "hal" anfangen. Bei mir spuckt er nämlich im Moment nur ein Ergebnis raus.
- Auch soll er Groß- und Kleinschreibung nicht beachten! "hal" bzw. "Hal"
Mein derzeitiger Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| function Search(ListBox:TListBox;Str:string;CaseSen:boolean=False):integer; var s:string; i:integer; begin Result:=-1; if not CaseSen then Str:=AnsiUpperCase(Str); for i:=0 to ListBox.Items.Count-1 do begin s:=ListBox.Items[i]; if not CaseSen then s:=AnsiUpperCase(s); if pos(Str,s)>0 then begin Result:=i; exit; end; end; end;
IndexOfEx(ListBox1,'Hallöle',False); |
Falls jemand versteht, was ich meine währe ich ihm sehr verbunden mir zu helfen
Danke im Voraus.
M!ndbyte
_________________ Our force; in mind.
Zuletzt bearbeitet von Mindforce am So 12.10.08 00:10, insgesamt 3-mal bearbeitet
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 11.10.08 16:19
Schau Dir mal die Funktion AnsiStartsText aus der Unit StrUtils an.
|
|
Mindforce 
      
Beiträge: 358
Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
|
Verfasst: Sa 11.10.08 16:23
Mit AnsiStartsText bzw. StartsStr kann ich nichts anfangen, da dies (wie ich es gesehen hab) nur einen wert ausgibt.
Oder teusche ich mich?
M!ndbyte
_________________ Our force; in mind.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 11.10.08 16:26
Richtig. Die Funktion gibt Dir zurück, ob ein Text mit einem anderen beginnt (ohne Berücksichtigung der Groß- und Kleinschreibung). Das jetzt noch in eine Schleife und fertig 
|
|
Mindforce 
      
Beiträge: 358
Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
|
Verfasst: Sa 11.10.08 17:01
.. die ich nicht umsetzen kann
Dann müsste ich eine weitere ListBox erstellen, wo in jeder Zeile aufgeschreiben wird, welche Zeilen schon durchsucht worden sind, damit er die überspringt. Irgendwie keine gute Lösung!
M!ndbyte
_________________ Our force; in mind.
Zuletzt bearbeitet von Mindforce am So 12.10.08 00:23, insgesamt 1-mal bearbeitet
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 11.10.08 17:12
Ich hab da mal was gebastelt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure ListMatches(const src, dest: TStrings; const Pattern: string; CaseSensitive: Boolean = false); var i: Integer; begin dest.BeginUpdate; try dest.Clear; for i := 0 to src.Count-1 do if (CaseSensitive and AnsiContainsStr(src[i],Pattern)) or (not CaseSensitive and AnsiContainsText(src[i],Pattern)) then dest.Add(src[i]); finally dest.EndUpdate; end; end; |
Der erste Parameter ist die Quellliste, der zweite die Zielliste, der dritte der Suchstring und der vierte legt fest, ob Case-Sensitiv gesucht werden soll.
Beispielaufruf:
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm36.Button1Click(Sender: TObject); begin ListMatches(ListBox1.Items,ListBox2.Items,'Ein',true); end; |
[edit] Von der Suche am Anfang auf Suche irgendwo im Text geändert. [/edit]
Zuletzt bearbeitet von DeddyH am Sa 11.10.08 17:19, insgesamt 1-mal bearbeitet
|
|
Mindforce 
      
Beiträge: 358
Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
|
Verfasst: Sa 11.10.08 17:19
Ja, thx! Das geht schonmal in die richtige Richtung. Aber es sucht wie gesagt nur am Anfang der Zeile.
Aber das liegt dann am AnsiStartsStr, richtig?
Gibt´s da noch Alternativen?
MfG,
M!ndbyte
_________________ Our force; in mind.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 11.10.08 17:21
Ich hab' s schon editiert.
|
|
Mindforce 
      
Beiträge: 358
Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
|
Verfasst: Sa 11.10.08 17:23
DANKE!
Danke, danke, danke!
Endlich gehts.
Vielen Dank!!
M!ndbyte
_________________ Our force; in mind.
|
|