return?
Halloooooooo erstmaaaaal :lol:
also ich hab folgendes:
Code:
wie oben zu sehen wird beim FormActivate(hallo spocki :wink: ) geprüft ob der im inputbox eingebene Name existiert, der MessDlg meldet das Ergebnis.
procedure TForm1.FormActivate(Sender: TObject);
begin with DataModule9 do begin Table2.Open; if Table2.FindKey([meld]) then begin if MessageDlg('Name existiert schon.'+#13+' Neuen Namen eingeben?', mtConfirmation, [mbYes,mbNo], 0) = mrYes then begin meld:=inputbox('Eingabe','Bitte den Namen eingeben!',''); end; end; end; Label16.Caption := meld; end; Wenn der User auf ok klickt wird diese input wiederholt. So...und wenn nun der Name wider existiert gehts trotzdem normal weiter. Also wie kann ich sozusagen ein return zum Anfang der Formactivate machen? Weiss jeder jetzt was ich meine :? ich glaube ich verstehe :shock: es selbst nicht Was?Wie??Wo??? Ach hier..jaja..komme gleich... bis denne! |
Hallo,
ich würde eine boolsche Variable als Flag einführen und dann in einer "while"-Schleife so lange rumrutschen, bis die Bedingung erfüllt ist. Das Flag wird also vor der Schleife mit FALSE initialisiert und nach jeder Eingabe des Benutzers auf den gewünschten Zustand (Bedingung erfüllt / nicht erfüllt) gesetzt. Grüße, Daniel |
hhmmm
hab auch schon an sowas gedacht..aber gehts nicht auch anders?? |
Ich würde das mit einer while-Schleife lösen
Code:
Table2.Open;
while Table2.FindKey([meld]) do begin MessageDlg('Name existiert schon.'+#13+' Neuen Namen eingeben?', mtConfirmation, [mbYes,mbNo], 0) = mrYes then begin meld:=inputbox('Eingabe','Bitte den Namen eingeben!',''); end; end; |
Zitat:
|
@jbg
Gedankenleser :lol: Das war auch das erste was mir einfiel..aber nix is |
Zitat:
|
Bitte um Erläuterung.
Für diesen Fall eben nicht anwendbar...oder irre ich mich da? |
GoTo's wurden früher bei Sprachen verwendet, die keine Code-Blöcke kannten, um gößere Code-Blöcke auszuführen.
Code:
So ein Konstrukt gab es nicht. Nach der if-Anwesisugn konnte nur eien Zeile ausgeführt werden.
if ... then
begin ...; end; So jetzt stell dir mal ein 500 Zeilenprogramm mit 10 bis 15 gotos's vor. Du wirst dich in dem Code nicht mehr zu rechtfinden. Heute hat man andere Möglichkeiten (bessere), um so etwas zu lösen, deshalb gilt es als schlechter Programmierstil trotzdem goto's einzusetzen. |
Hallo Privateer3000,
der Code von Nils, ist das, was du machen solltest. Eine Änderung schlage ich noch vor, damit der Benutzer auch nein anklicken kann:
Code:
Table2.Open;
abbruch := False; while Not abbruch and (Table2.FindKey([meld])) do begin if MessageDlg('Name existiert schon.'+#13+' Neuen Namen eingeben?', mtConfirmation, [mbYes,mbNo], 0) = mrYes then meld:=inputbox('Eingabe','Bitte den Namen eingeben!','') else abbruch := True; end; if abbruch then begin Table2.Close; Application.Terminate end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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