Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Komisches Verhalten beim Listbox durchsuchen

  Alt 24. Jun 2008, 05:59
Moin,

nur am Rande:

Tauchen Objekte in der Signatur deiner Funktion auf, dann solltest du die Klasse mit der größtmöglichen Abstraktion verwenden. Da du in der Funktion InList() auf keine andere Eigenschaft der ListBox zugreifst, solltest du gleich die Items übergeben. Deren abstrakte Klasse ist TStrings, was zu einer Anpassung des Funktionsnamens führt. Wenn du dann noch deinen Code etwas vereinfachst, dann bleibt nicht mehr viel übrig.

Delphi-Quellcode:
function StrExists(items: TStrings; s: string): Boolean;
begin
  Result := items.IndexOf(s) >= 0;
end;
Wenn du die Funktion benutzt, dann gibt es zwei Gründe es anders zu tun als du es zeigst: Zum einen ist IF FALSE einfach eleganter als IF FALSE = TRUE, zum anderen gibt es mehrere Möglichkeiten einen Speicherbereich als boolesche Variable zu interpretieren, was gelegentlich zu Überraschungen führen kann. In deinem Fall besteht keine Gefahr, aber besser du gewöhnst es dir garnicht erst so an. Dass du deine Daten in einer ListBox anzeigst, ist sicherlich okay. Speichern solltest du sie aber in einer nicht-visuellen Klasse - aber das hat Dani dir schon geschrieben.

Delphi-Quellcode:
begin
  Log(RequestedDocument);
  if StrExists(DocumentList, RequestedDocument) then
    RequestedDocument := 'index.html';
end;
Grüße vom marabu
  Mit Zitat antworten Zitat