Hi,
weiß nicht, ob der Name des Themas gut gewählt ist, aber ich programmiere nur sehr selten und kenne mich daher auch mit vielen Begrifflichkeiten noch nicht so gut aus.
Habe auch schon die Suche benutzt, aber leider nichts passendes gefunden.
Zu meinem Problem:
Ich habe einen Record "TSchueler", welcher Name, Vorname, Alter und Kurs beinhaltet.
Weiterhin habe ich ein Array "schüler" [1..30] und
4 Editfenster, in die die Daten jedes Schülers eingegeben und daraufhin gespeichert werden.
Jetzt möchte ich bspw. gerne in das erste Edit-Fenster einen Namen eingeben und dann über einen Suche-Button die fehlenden Informationen in den anderen Edit-Fenstern anzeigen lassen.
Meine bisherige Lösung sieht so aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89:
| type TSchueler = record name: String; vorname: String; alter: String; kurs: String; end;
var schuler: array [1..30] of TSchueler; index: integer = 1;
procedure TListenform.Speichern; begin schuler[index].name:=NameEdit.Text; schuler[index].vorname:=VornameEdit.Text; schuler[index].alter:=AlterEdit.Text; schuler[index].kurs:=KursEdit.Text; end;
procedure TListenform.Anzeigen; begin NameEdit.Text:=schuler[index].name; VornameEdit.Text:=schuler[index].vorname; AlterEdit.Text:=schuler[index].alter; KursEdit.Text:=schuler[index].kurs; end;
procedure TListenform.SpeichernButtonClick(Sender: TObject); begin SuchenButton.Enabled:=true; if index < 30 then begin Speichern; AnzahlEdit.Text:=IntToStr(index); inc (index); Anzeigen; end; end;
procedure TListenform.SuchenButtonClick(Sender: TObject); var eintraege, indexhilf:integer; begin indexhilf:=StrToInt(AnzahlEdit.Text); index:=1;
for eintraege:=1 to 30 do
if NameEdit.Text<>'' then begin repeat if schuler[index].name=nameedit.text then Anzeigen else inc(index); until schuler[index].name=nameedit.text; Anzeigen; end
else if VornameEdit.Text<>'' then begin repeat if schuler[index].vorname=vornameedit.text then Anzeigen else inc(index); until schuler[index].vorname=vornameedit.text; Anzeigen; end
else if AlterEdit.Text<>'' then begin repeat if schuler[index].alter=alteredit.text then Anzeigen else inc(index); until schuler[index].alter=alteredit.text; Anzeigen; end
else if KursEdit.Text<>'' then begin repeat if schuler[index].kurs=kursedit.text then Anzeigen else inc(index); until schuler[index].kurs=kursedit.text; Anzeigen; end
else Begin showmessage('Kein Suchbegriff eingegeben'); break; end; index:=indexhilf+1; end; |
Problem ist noch, dass zB wenn ich nur einen Teil des Namens eingebe ein Fehler auftritt, den würde ich gern abfangen und eine Meldung ausgeben.
Und vielleicht ist es auch möglich die Suche zu vereinfachen. Ich denke, ich habe bisher eine sehr umständliche Variante gewählt.
Über Vorschläge und Verbesserungen würde ich mich sehr freuen.
Grüße
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt