Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: [Konzeptfrage] ist Listbox schneller zu durchsuchen?

  Alt 24. Sep 2008, 23:04
Er meint, du sollst bereits vor der Suche die Listbox.Items in einer StringList zwischenspeichern, am besten bereits konvertiert.
Du suchst dann in der Stringlist

Außerdem folgendes:
Delphi-Quellcode:
type
  TSuche = record
    Text: AnsiString;
    ItemPos: integer;
    StrPos: integer;
  end;
//...

var
  i, NextPos: Integer;
  ItemText: AnsiString;
begin
  if Suche.ItemPos = -1 then
    Suche.ItemPos := 0;
  Suche.Text := AnsiUpperCase(Edit1.Text); // Edit1 = Suchtext

  for i := Suche.ItemPos to Pred(Search_Form.Listbox.Count) do
  begin
    ItemText := AnsiUpperCase(Search_Form.Listbox.Items.Strings[i]);
    if Suche.StrPos > 0 then
    begin
      NextPos := pos(Suche.Text, Copy(ItemText, Suche.StrPos +
        length(Suche.Text), length(ItemText) - Suche.StrPos));
// vll. Nextpos = posex(Suche.Text im itemtext, nextpos + length(suche.text)) ???
// dann hier keine if abfrage, sondern einfach

      if NextPos > 0 then
        Suche.StrPos := NextPos; // siehe oben
      else
        Suche.StrPos := 0; // sinn? pos gibt doch nie werte < null zurück, oder?
    end
    else
      Suche.StrPos := pos(Suche.Text, ItemText);
....
  Mit Zitat antworten Zitat