AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Suchfunktion verbessern

Ein Thema von ghost1601 · begonnen am 11. Jan 2007 · letzter Beitrag vom 11. Jan 2007
Antwort Antwort
ghost1601

Registriert seit: 26. Aug 2006
64 Beiträge
 
Delphi 2005 Personal
 
#1

Suchfunktion verbessern

  Alt 11. Jan 2007, 09:02
hi,
ich habe mir eine suchfunktion zusammengebastelt mit der ich ein array durchsuchen kann. nun habe ich jeodch das problem, wenn man nicht einen exakten suchbegriff eingibt wird das gesamte array zerhaun und auch kein richtiges suchergebnis ausgegeben.
es wäre von daher ganz praktisch wenn man die suchfunktion so gestallten könnte, dass sie auch bei einer eingabe von nur einen buchstaben ein ergebnis zu tage fördert.
hier mal die jetzige funktion:

Delphi-Quellcode:
function TForm1.Suche(const sucheNach : string): LongInt;
var i:integer;
begin
for i:= 1 to max do
begin
    if datenfeld[i].kontaktname = SucheNach
        then
          begin
            result:=i;
            exit;
          end;
end;
end;
wenn jemand ne idee hat wie ich das bewältigen könnte wäre ich sehr dankbar
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Suchfunktion verbessern

  Alt 11. Jan 2007, 09:24
1. Du kannst mit "lowercase" bzw. "uppercase" arbeiten, damit due Groß- und Kleinschreibung nicht beachtest und dann gibt es den Befehl "pos", der einen substr innerhalb eines Strings sucht.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Suchfunktion verbessern

  Alt 11. Jan 2007, 09:28
Wieso machst du hier nicht weiter?

Ich würde statt Exit; Break; verwenden und als Result -1 zurückgeben, um zu zeigen, das es kein Suchergebnis gibt. Eine unspezifischere Suche, zB mit Wildcards, wird aufwändiger. Da kann ich dir aber leider nicht bei helfen. Da gibts hier andere Spezalisten für.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
marabu

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

Re: Suchfunktion verbessern

  Alt 11. Jan 2007, 09:32
Hi,

ich habe den von Christian verlinkten thread nicht gelesen, aber zu deiner Suchfunktion: Ich würde die zu einer eigenständigen Funktion machen und nicht zu einer Methode:

Delphi-Quellcode:
type
  KontaktRec = record
    Nachname: String;
    Vorname: String;
  end;

var
  Kontakte: array of KontaktRec;

uses
  StrUtils;

function Suche(const Kontakte: array of KontaktRec; const Feld, Zeichenkette: String): Integer;
var
  found: Boolean;
begin
  Result := High(Kontakte);
  while Result >= 0 do
  begin
    case AnsiIndexText(Feld, ['NachName', 'Vorname']) of
      0: found := AnsiContainsText(Kontakte[Result].Nachname, ZeichenKette);
      1: found := AnsiContainsText(Kontakte[Result].Vorname, ZeichenKette);
    else
      found := False;
    end;
    if found
      then Exit
      else Dec(Result);
  end;
end;
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:23 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