Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Suchfunktion mit Memo- und Editfeldern (https://www.delphipraxis.net/51850-suchfunktion-mit-memo-und-editfeldern.html)

Andre3001 20. Aug 2005 13:59


Suchfunktion mit Memo- und Editfeldern
 
Hallo,

auf der Suche nach einer Lösung für mein Problem bin ich auf Euer Forum gestoßen. Vielleicht kann mir ja hier jemand weiterhelfen, was echt klasse wär.

Am besten fang ich mal ganz vorn an, alles zu erklären. Mein Programm ist dazu da, Personen zwei Dinge zuzuordnen (einmal eine Abkürzung des Namens und ein oder mehrere Gegenstände). Dafür habe ich ein Formblatt, auf dem erstmal die Daten eingelesen und abgespeichert werden müssen. Das funktioniert so weit.


Auf einem zweiten Formblatt sind je drei Editfelder und darunter drei Memofelder. Die erste Spalte (1. Edit und 1. Memo) ist zuständig für den Namen, die zweite Spalte für die Abkürzungen und die dritte für die Gegenstände. Der Nutzer soll dann mit Hilfe einer Suchfunktion die Möglichkeit haben, entweder

a) einen Namen einzugeben (im ersten Editfeld)
=> woraufhin er als Ergebnis der Suche den Namen, die Abkürzung und alle dazugehörigen Gegenstände in den drei passenden Memofeldern angezeigt bekommt

b) eine Abkürzung einzugeben (im zweiten Editfeld)
=> woraufhin er als Ergebnis der Suche den Namen, die Abkürzung und alle dazugehörigen Gegenstände in den drei passenden Memofeldern angezeigt bekommt

c) einen Gegenstand einzugeben (im dritten Editfeld)
=> woraufhin alle Namen inkl. aller dazugehörigen Abkürzungen erscheinen sollen, die diesem Gegenstand zugeordnet wurden.


Soviel zur Theorie. Funktionieren tuts bei mir leider nicht und als Anfänger weiß ich auch nicht, wo ich das Problem angehen soll. Hoffentlich könnt ihr mir dabei helfen.

Mein Programm-Code sieht bisher so aus:

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
begin
  if edit1.Text <> '' then
  begin
    Zeiger:=start;
    while Zeiger^.Name <> Edit1.Text do
    begin
      Zeiger:=Zeiger^.Next;
    end;
    Memo1.Lines.add(Zeiger^.Name);
    Memo2.Lines.add(Zeiger^.Kuerzel);
    Memo3.Lines.add(Zeiger^.Gegenstand);
  end
  else if Edit2.Text <> '' then
  begin
    Zeiger:=start;
    while Zeiger^.Kuerzel <> Edit2.Text do
    begin
      Zeiger:=Zeiger^.Next;
    end;
    Memo1.Lines.add(Zeiger^.Name);
    Memo2.Lines.add(Zeiger^.Kuerzel);
    Memo3.Lines.add(Zeiger^.Gegenstand);
  end
  else if Edit3.Text <> '' then
  begin
    Zeiger:=start;
    while Zeiger^.Gegenstand <> Edit3.Text do
    begin
      Zeiger:=Zeiger^.Next;
    end;
    Memo1.Lines.add(Zeiger^.Name);
    Memo2.Lines.add(Zeiger^.Kuerzel);
    Memo3.Lines.add(Zeiger^.Gegenstand);
  end;
end;


Bin für jeden Tipp dankbar.

SirThornberry 21. Aug 2005 16:26

Re: Suchfunktion mit Memo- und Editfeldern
 
was ist der Fehler? Gibt es eine Access-Violation?
folgendes führt zum fehler wenn kein suchergebnis gefunden wurde
Delphi-Quellcode:
while Zeiger^.Name <> Edit1.Text do
begin
  Zeiger:=Zeiger^.Next;
end;
Denn Wenn Zeiter.Next nil ist dann ist Zeiger danach auch nil und bei Zeiger^.Name knallts dann.
Dementsprechend muss es so aussehen

Delphi-Quellcode:
while Assigned(Zeiger) and (Zeiger^.Name <> Edit1.Text) do
begin
  Zeiger:=Zeiger^.Next;
end;
und hinter der Schleife darfst du dann natürlich auch nur das Ergebnis anzeigen wenn etwas gefunden wurde
Delphi-Quellcode:
if Assigned(Zeiger) then
begin
  Memo1.Lines.add(Zeiger^.Name);
  Memo2.Lines.add(Zeiger^.Kuerzel);
  Memo3.Lines.add(Zeiger^.Gegenstand);
end else
  ShowMessage('nix gefunden');

Andre3001 23. Aug 2005 17:51

Re: Suchfunktion mit Memo- und Editfeldern
 
Dank Deiner Hilfe funktioniert die Suche jetzt.

Es gibt zwar noch einige Probleme im Programm, aber die versuch ich jetzt erstmal selbst zu beheben. Wenn nicht hörst du von mir :wink: .


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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