Autor Beitrag
NoEon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: Mi 12.03.03 16:57 
Hallo,
nervensäge NoEon ist wieder da... sorry

vogende abfrang procedure für nullen hab ich geschrieben:
ausblenden 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 user profile iconKlabautermann: Code-Tags hinzugefügt.


Zuletzt bearbeitet von NoEon am Do 13.03.03 12:36, insgesamt 1-mal bearbeitet
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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!)
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: Do 13.03.03 08:58 
also nochmal ich ich will ja etwas lernen

der code sieht ja jetzt nach "UGrohne" so aus
ausblenden 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 user profile iconTino: Code-Tags hinzugefügt.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 13.03.03 09:12 
Nimm mal das T vor TForm1 weg und über gib noch einen Parameter:
ausblenden Quelltext
1:
Form1.Button1Click(self);					
NoEon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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
ausblenden Quelltext
1:
Button1.Click;					

selber nen Klick auszulösen

Gruß
NoEon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: 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



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 13.03.03 11:31 
Nein, Du denkst Dir nichts anderes aus! :wink:

Hier, so sollte es aussehen.
ausblenden volle Höhe Quelltext
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



BeitragVerfasst: Do 13.03.03 11:36 
Oder wie ich es meinte:
ausblenden volle Höhe Quelltext
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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Do 13.03.03 12:30 
Noch was. Wenn du sowas machst:

ausblenden 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:

ausblenden Quelltext
1:
Form1.Button1Click(nil);					

_________________
Popov
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: 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):

ausblenden 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: 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