Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi return? (https://www.delphipraxis.net/382-return.html)

Privateer3000 10. Jul 2002 19:07


return?
 
Halloooooooo erstmaaaaal :lol:

also ich hab folgendes:
Code:
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;
wie oben zu sehen wird beim FormActivate(hallo spocki :wink: ) geprüft ob der im inputbox eingebene Name existiert, der MessDlg meldet das Ergebnis.
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!

Daniel 10. Jul 2002 19:21

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

Privateer3000 10. Jul 2002 21:27

hhmmm
hab auch schon an sowas gedacht..aber gehts nicht auch anders??

Nils 10. Jul 2002 21:49

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;

jbg 10. Jul 2002 22:07

Zitat:

Zitat von Privateer3000
... gehts nicht auch anders??

Ja und zwar mit GoTo aber das lassen wir mal lieber. Wir programmieren ja nicht in Basic sondern in Pascal.

Privateer3000 10. Jul 2002 22:32

@jbg
Gedankenleser :lol:
Das war auch das erste was mir einfiel..aber nix is

jbg 10. Jul 2002 23:39

Zitat:

Zitat von Privateer3000
aber nix is

Wie meinst du das. Pascal bietet schon die Möglichkeit mit GoTo nur nutzt sie keiner, was meines Erachtens auch richtig ist. (auch C/C++ hat ein goto).

Privateer3000 10. Jul 2002 23:45

Bitte um Erläuterung.
Für diesen Fall eben nicht anwendbar...oder irre ich mich da?

Luckie 11. Jul 2002 04:33

GoTo's wurden früher bei Sprachen verwendet, die keine Code-Blöcke kannten, um gößere Code-Blöcke auszuführen.
Code:
if ... then
begin
  ...;
end;
So ein Konstrukt gab es nicht. Nach der if-Anwesisugn konnte nur eien Zeile ausgeführt werden.

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.

MrSpock 11. Jul 2002 06:42

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.
Seite 1 von 2  1 2      

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