| Autor |
Beitrag |
NoEon
      
Beiträge: 138
win9x, win 2000, win xp, linux 8.0
|
Verfasst: Mi 12.03.03 16:57
Hallo,
nervensäge NoEon ist wieder da... sorry
vogende abfrang procedure für nullen hab ich geschrieben:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure abfang1; begin if messageDlg('Bitte geben Sie einen gültigen Wert ein oder 0,0!', mtWarning,[mbYes, mbNo], 0) = mrYes then Begin MessageDlg('USSCP wird angehalten!!', mtwarning, [mbYES],0); exit; else TForm1.Button1Click;
end; end; |
so nun aber fange ich mit neer Endlosschleife an... ich will eigentlich das das Programm sagt:"'Bitte geben Sie einen gültigen Wert ein oder 0,0" dann wäre es gut wenn ein ok Knopf da wäre auf den man draufdrückt und der das Programm auf exit setzt.
und ein cancel knopf aber falsch.. warte.. den brauch ich garnicht, nur einen hinweis knopg (ok Knopf) der nach drücken das Programm auf EXIT setzt und das war es... ja genau da ist mein Problem kann man das auch einfacher machen als mit MessageDlg?
Gruss
NoEon
Moderiert von Klabautermann: Code-Tags hinzugefügt.
Zuletzt bearbeitet von NoEon am Do 13.03.03 12:36, insgesamt 1-mal bearbeitet
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mi 12.03.03 17:10
Titel: Re: it then Schleife mit MessageDlg's und keine Ende (Endles
| NoEon hat folgendes geschrieben: | Hallo,
nervensäge NoEon ist wieder da... sorry
vogende abfrang procedure für nullen hab ich geschrieben:
procedure abfang1;
begin
if messageDlg('Bitte geben Sie einen gültigen Wert ein oder 0,0!', mtWarning,[mbYes, mbNo], 0) = mrYes
then Begin
MessageDlg('USSCP wird angehalten!!', mtwarning, [mbYES],0);
exit;
else TForm1.Button1Click;
end;
end;
so nun aber fange ich mit neer Endlosschleife an... ich will eigentlich das das Programm sagt:"'Bitte geben Sie einen gültigen Wert ein oder 0,0" dann wäre es gut wenn ein ok Knopf da wäre auf den man draufdrückt und der das Programm auf exit setzt.
und ein cancel knopf aber falsch.. warte.. den brauch ich garnicht, nur einen hinweis knopg (ok Knopf) der nach drücken das Programm auf EXIT setzt und das war es... ja genau da ist mein Problem kann man das auch einfacher machen als mit MessageDlg?
|
Ich musste Deinen Post fünf mal lesen, bevor ich dachte, ich blicks, bin mir aber net sicher. Also Dein else passt net. Es sollte so aussehen (Bitte in Zukunft Code-Tags verwenden!) Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure abfang1; begin if messageDlg('Bitte geben Sie einen gültigen Wert ein oder 0,0!', mtWarning,[mbYes, mbNo], 0) = mrYes then Begin MessageDlg('USSCP wird angehalten!!', mtwarning, [mbOk],0); exit; end else TForm1.Button1Click; end; |
Der OK-Button ist mbOK, der Cancel entsprechend mbCancel
Probiers in Zukunft mit der Code-Vervollständigung, da stehen meist auch alle Möglichkeiten drin.
Gruß
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Mi 12.03.03 20:46
Was ist eine if then Schleife? Meinst du If-Abfrage oder eine Schleife, die aber nicht mit If zu tun hat, sondern mit repeat until, while, for.
_________________ Ist Zeit wirklich Geld?
|
|
NoEon 
      
Beiträge: 138
win9x, win 2000, win xp, linux 8.0
|
Verfasst: Do 13.03.03 08:14
sorry kommt nicht wieder vor.. ich hab das popsting im affekt geschrieben und ich war mir bis zum schluss nicht wirklich sicher ob ich das wirklcih posten soll.. Dann war halt meine Hand zu schnell und klick.. war es raus! Aber trotzdem
vielen Dank für die Antwort!
MfG
NoEon
|
|
NoEon 
      
Beiträge: 138
win9x, win 2000, win xp, linux 8.0
|
Verfasst: Do 13.03.03 08:58
also nochmal ich ich will ja etwas lernen
der code sieht ja jetzt nach "UGrohne" so aus
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure abfang1; begin if messageDlg('Bitte geben Sie einen gültigen Wert ein oder 0,0!', mtWarning,[mbYes, mbNo], 0) = mrYes then Begin MessageDlg('USSCP wird angehalten!!', mtwarning, [mbOk],0); exit; end else TForm1.Button1Click; end; // hier hält der Compiler an und markert rot. [Fehler] code1.pas (143): Nicht genügend wirkliche Parameter |
das ist seine Fehlermeldung... wo liegt der Hase begraben?
ja wenn mir das mal jemand sagen koennte wäre ich dankbar
Moderiert von Tino: Code-Tags hinzugefügt.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 13.03.03 09:12
Nimm mal das T vor TForm1 weg und über gib noch einen Parameter:
Quelltext 1:
| Form1.Button1Click(self); |
|
|
NoEon 
      
Beiträge: 138
win9x, win 2000, win xp, linux 8.0
|
Verfasst: Do 13.03.03 09:15
antwort des compiler
[Fehler] code1.pas(142): Undefinierter Bezeichner: 'self' :roll:
verdammt was kann denn das sein.... zur info noch mal das TForm1.button1Clioch ist die Standat Prozedure die dann weiterlaufen soll!
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Do 13.03.03 09:17
Hast Du die Prozedur oben in einer anderen Unit deklariert? Dann könnte sows vorkommen. probiers dann einfach mal mit form1 oder versuch mit
Quelltext
selber nen Klick auszulösen
Gruß
|
|
NoEon 
      
Beiträge: 138
win9x, win 2000, win xp, linux 8.0
|
Verfasst: Do 13.03.03 09:47
:idea:
kann es sein, das ich etwas grundlegendes vergessen habe (was ich natuerlich noch nicht wusste)?
Nämlich das ich die Procedure abfang auch noch irgendwo anderes eintragen muss bei Delphi, weil ich die ja manuel geschrieben habe! oder??
Danke
NoEon
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 13.03.03 09:51
Wenn sie in der Unit von Form1 ist, dann mach deine Prozedur zu einer Methode von TForm1 und es sollte gehen.
Ansonsten nimm die Unit in die uses von der Unit auf zu der dein Formular mit dem Button gehört.
|
|
NoEon 
      
Beiträge: 138
win9x, win 2000, win xp, linux 8.0
|
Verfasst: Do 13.03.03 11:25
sach mal.... bin ich zu doof??? Dat geht alles nicht verdammt!
Trozdem Danke für's lesen
ich denk mir was anderes aus!!
MfG
NoEon
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 13.03.03 11:30
Ich weiß ja nicht. Aber du bist mit Informationen etwas sparsam. Wir raten hier eigentlich nur die ganze Zeit rum. Wenn du uns deine Situation etwas genauer schildern würdest, kämen wir eventuell weiter.
Also wo ist denn nun die Prozedur? In der Unit von Form1 oder in einer anderen?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 13.03.03 11:31
Nein, Du denkst Dir nichts anderes aus!
Hier, so sollte es aussehen.
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:
| type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Button1'); end;
procedure abfang1; begin if messageDlg('Bitte geben Sie einen gültigen Wert ein oder 0,0!',mtWarning,[mbYes, mbNo], 0) = mrYes then Begin MessageDlg('USSCP wird angehalten!!', mtwarning, [mbOk],0); exit; end else Form1.Button1.Click; end; |
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 13.03.03 11:36
Oder wie ich es meinte:
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:
| type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } procedure abfang1; public { Public-Deklarationen } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Button1'); end;
procedure TForm1.abfang1; begin if messageDlg('Bitte geben Sie einen gültigen Wert ein oder 0,0!',mtWarning,[mbYes, mbNo], 0) = mrYes then Begin MessageDlg('USSCP wird angehalten!!', mtwarning, [mbOk],0); exit; end else Button1.Click; end; |
Übrigens sehr unübersichtlich formatiert der Code. Solltest unbedingt deinen Stil verbessern, nur ein kleiner Tipp.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 13.03.03 11:49
| Luckie hat folgendes geschrieben: | | Oder wie ich es meinte: |
Jo, oder so.
| Luckie hat folgendes geschrieben: | | Übrigens sehr unübersichtlich formatiert der Code. Solltest unbedingt deinen Stil verbessern, nur ein kleiner Tipp. |
Ich nehme mal an, dass Du Yello ... ähm ... NoEon meintest, oder?
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
NoEon 
      
Beiträge: 138
win9x, win 2000, win xp, linux 8.0
|
Verfasst: Do 13.03.03 12:13
Hallo ok... ich kann es ja noch mal Probieren!
also jetzt werden warscheinlich alle den Kopf Schuetteln!
Ich habe ein riesengrosses Rechenprogram mit zich Eingaben.
Und natuerlich auch mit grossen (langen) Funtionsgleichungen. Hier wird auch geteielt, ergo Divison durch null.... jetzt habe ich zum Beispiel da stehen:
if edit1.text = '0' then abfang1;
jetzt sollte die besagte Prozedur Starten...
ich weiss erlerding hier nicht was Sinnvoll ist. diese Abfang Prozedur ist ja nur für die Edit Felder interessant bei denen eine Null Eingabe zu einer Division durch Null führen würde oder? Ich ddenke schon. Also muss ich etwas haben, dass das mir die ganzen Felder (Eingaben) abfängt bei denen die Eingabe Null zu einem Fehler führen würde!
Konnte ich mein Problem besser schildern??
Danke
NoEon ----> ich habe den Namen schon seit 6 Jahren.. da gab es Eon noch garnicht nicht mal Yello!!!! obwohl Yello auch ein geschuetzter Name sein muesste! "Desire" sag ich da nur ;-)
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Do 13.03.03 12:24
Könnte mal langsam einer den Titel ändern. Ich zucke jedes mal zusammen wenn ich it then Schleife lese. Wie wäre es mit if then? Bei der Gelegenheit kann man auch aus der Schleife eine Abfrage machen.
Wie geht das? Einfach zum ersten Beitrag gehen und oben rechte auf Edit klicken. Schon kann man solche Kleinigkeiten ändern.
_________________ Popov
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Do 13.03.03 12:30
Noch was. Wenn du sowas machst:
Quelltext 1:
| Form1.Button1Click(self); |
dann weiß der Compiler nicht was Self ist. Die Begründung und Lösung wurde dir weiter oben angeboten. Wenn du aber deine Prozedur nirgendwo eintragen willst und der Sender unwichtig ist, dann kannst du es auch so machen:
Quelltext 1:
| Form1.Button1Click(nil); |
_________________ Popov
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Do 13.03.03 13:22
Ich hab mir dein Problem noch mal durchgelesen. Du willst als verhindern, daß es ein 0 (Null) in einem Editfeld geben kann. Ich würde es so machen (unter Berücksichtigung deines Codes):
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure abfang1(Edit: TEdit); begin MessageDlg('Bitte geben Sie einen gültigen Wert ein oder 0,0!', mtWarning,[mbOk], 0);
Edit.SetFocus; end;
procedure TForm1.Button1Click(Sender: TObject); begin if edit1.text = '0' then abfang1(edit1); end; |
Auf diese Weise landet der Cursor in dem Editfeld in dem eine Null ist.
Das ganze kann man auch elleganter machen. Wenn man mehrere Editfelder hat und man beim ersten stehen bleiben will, dann würde ich es anders machen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function abfang1(Edit: TEdit): Boolean; begin Result := True;
MessageDlg('Bitte geben Sie einen gültigen Wert ein oder 0,0!', mtWarning,[mbOk], 0);
Edit.SetFocus; end;
procedure TForm1.Button1Click(Sender: TObject); begin if edit1.text = '0' then if abfang1(edit1) then Exit; if edit2.text = '0' then if abfang1(edit1) then Exit; if edit3.text = '0' then if abfang1(edit1) then Exit; end; |
Ist zwar ein wenig gebastelt, aber so steigt die Prozedur bereits beim ersten Fehler raus.
_________________ Popov
|
|
NoEon 
      
Beiträge: 138
win9x, win 2000, win xp, linux 8.0
|
Verfasst: Do 13.03.03 13:41
wow nicht schlecht so hab ich mir das "fast" vorgstellt!
so läuft es echt super das Programm!
danke besonderes an Dich Popov Perfekt!! Ich will das auch so gut koennen! ;-)
danke auch an alle weiteren die mir geholfen haben... mien Ausdrucksweise mal zu überdenken! ;-)
Gruss
NoEon
|
|