![]() |
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. |
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:
Denn Wenn Zeiter.Next nil ist dann ist Zeiger danach auch nil und bei Zeiger^.Name knallts dann.
while Zeiger^.Name <> Edit1.Text do
begin Zeiger:=Zeiger^.Next; end; Dementsprechend muss es so aussehen
Delphi-Quellcode:
und hinter der Schleife darfst du dann natürlich auch nur das Ergebnis anzeigen wenn etwas gefunden wurde
while Assigned(Zeiger) and (Zeiger^.Name <> Edit1.Text) do
begin Zeiger:=Zeiger^.Next; end;
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'); |
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 20:26 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