Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi einfache suchfunktion - hilfe (https://www.delphipraxis.net/65944-einfache-suchfunktion-hilfe.html)

theNick 22. Mär 2006 17:14


einfache suchfunktion - hilfe
 
Hallo,
ich habe ein Problem -> ich möchte gerne ein Array durchgehen und nach vor bzw. nachnamen suchen,
aber irgendwie verzweifel ich daran. Es will und will nicht gehen obwohl ich es mitlerweile so einfach wie möglich geschrieben habe (zu anfang ging es aber nu will es nimmer).

Delphi-Quellcode:
procedure TForm1.ButtonsuchenClick(Sender: TObject);
var i:integer;
begin
{suchfunktion}
  for i:=1 TO 200 do
    begin
    {suchen nach vorname}
      if Editsuchen.text = Schuelerfeld[i].vorname THEN
        begin
          Labelstatus.Color := clgreen;
          Labelstatus.caption := 'Der gefundene Schüler hat die ID ' + IntToStr(i);
        end
      else
        BEGIN
          Labelstatus.caption := 'Kein Eintrag gefunden';
          Labelstatus.Color := clred;
        END;
     {suchen nach nachname}
      if Schuelerfeld[i].nachname = Editsuchen.text THEN
        begin
          Labelstatus.Color := clgreen;
          Labelstatus.caption := 'Der gefundene Schüler hat die ID ' + IntToStr(i);
        end
      else
        BEGIN
          Labelstatus.caption := 'Kein Eintrag gefunden';
          Labelstatus.Color := clred;
        END;
    end;
end;

jfheins 22. Mär 2006 17:17

Re: einfache suchfunktion - hilfe
 
Du musst noch ein exit reinmachen, wenn er den schüler gefunden hat ;)

theNick 22. Mär 2006 17:19

Re: einfache suchfunktion - hilfe
 
kann ich leider nicht, ich wollte eigentlich noch auf ein paar andere labels ausgeben, wenn der mehr als einen findet.

pacman1986 22. Mär 2006 17:20

Re: einfache suchfunktion - hilfe
 
dann mach noch eine variable die alle informationen speichert

Matze 22. Mär 2006 17:27

Re: einfache suchfunktion - hilfe
 
Hi

Zitat:

Zitat von theNick
kann ich leider nicht, ich wollte eigentlich noch auf ein paar andere labels ausgeben, wenn der mehr als einen findet.

Wenn es Labels sein müssen, bietet sich Delphi-Referenz durchsuchenFindComponent an. Du lässt eine Variable mitlaufen, und kannst mittels dieser dann deine Labels ansprechen, die im Namen ebenfalls diese Zahl enthalten müssen (z.B. LblSchuelerVorName1, LblSchuelerNachName1, LblSchuelerVorName2, LblSchuelerNachName2, ...).

Oder, besser, du erstellst die Labels zur Laufzeit, wenn ein Eintrag gefunden wurde. Vielleicht bietet sich für deine Zwecke aber auch eine ListBox/ListView o.ä. an.

Ratte 22. Mär 2006 17:35

Re: einfache suchfunktion - hilfe
 
Dein Code kann nicht funktionieren, denk mal nach: Wenn ein Schüler mit dem passendem Vornamen gefunden wird, wird der Nachname danach geprüft und da bei den wenigsten Leuten der Vorname gleich dem Nachnamen ist, sofort wieder auf rot gesetzt. wenn der nachname gefunden wurde wird der nächste Schüler geprüft und da dieser wahrscheinlich einen anderen Vornamen hat, das Label sofort wieder auf rot gestzt. Du musst die else-Befehle weglassen udn du solltest bei einem Treffer Prüfen, ob das label schon grün ist und wenn ja die ID auf ein neues Label schreiben.

theNick 22. Mär 2006 18:18

Re: einfache suchfunktion - hilfe
 
vielen dank an alle von euch :D
hat mir sehr geholfen !!

@ratte: *slap me* darauf hätte ich auch vor 2h schon kommen können ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz