Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Funktion Vorgabewert
LittleBen - Fr 10.02.12 20:23
Titel: Funktion Vorgabewert
Hallo,
gerade eben habe ich zum ersten Mal eine Fuktion mit Vorgabewerten geschrieben...was nicht funktioniert hat :D Mal wieder ein komisches Phänomen:
Kopf
Delphi-Quelltext
1:
| function Test(nZahl: byte=0): boolean; |
Funktion
Delphi-Quelltext
1: 2: 3: 4:
| function TF_Main.Test(nZahl: byte=0): boolean; begin showmessage(inttostr(nZahl)); end; |
Wenn ich diese Funktion nun so
Test(); ausführe, dann wird die
0 ausgegeben. Soweit ist es richtig. Nun änder ich den Vorgabewert von 0 auf 1 und führe die Funktion erneut aus. Jetzt wird richtigerweise die
1 ausgegeben. Aber wenn ich danach wieder den Vorgabewert ändern, so wird immer wieder die
1 ausgegeben, egal was der eigentlich Vorgabewert ist.
Warum?
Viele Grüße,
Littleben
jaenicke - Fr 10.02.12 21:15
Entweder ist beim Aufruf etwas schief gegangen oder die Unit wurde nicht neu kompiliert. :nixweiss:
Am geposteten Quelltext an sich kann das nicht liegen.
LittleBen - Sa 11.02.12 00:05
Ok...ich fang gar nicht erst an mit der Bequemlichkeit :D Gibt eh nur Probleme!
Delete - Sa 11.02.12 10:46
LittleBen hat folgendes geschrieben : |
Hallo,
gerade eben habe ich zum ersten Mal eine Fuktion mit Vorgabewerten geschrieben...was nicht funktioniert hat :D Mal wieder ein komisches Phänomen:
Kopf
Delphi-Quelltext 1:
| function Test(nZahl: byte=0): boolean; |
Funktion
Delphi-Quelltext 1: 2: 3: 4:
| function TF_Main.Test(nZahl: byte=0): boolean; begin showmessage(inttostr(nZahl)); end; |
Wenn ich diese Funktion nun so Test(); ausführe, dann wird die 0 ausgegeben. Soweit ist es richtig. Nun änder ich den Vorgabewert von 0 auf 1 und führe die Funktion erneut aus. Jetzt wird richtigerweise die 1 ausgegeben. Aber wenn ich danach wieder den Vorgabewert ändern, so wird immer wieder die 1 ausgegeben, egal was der eigentlich Vorgabewert ist. Warum? |
Kann ich hier nicht nachvollziehen. Mein Testcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function TFormMain.Test(nZahl: byte=0): boolean; BEGIN Result := FALSE; showmessage(inttostr(nZahl)); Result := nZahl > 0; END;
procedure TFormMain.Button2Click(Sender: TObject); VAR Wert : Byte; Ergebnis : Boolean; begin Wert := Round(JvSpinEdit1.Value); Ergebnis := Test(); end; |
Das funktioniert so, wie es soll ... :?!?:
jaenicke - Sa 11.02.12 11:02
Dass das eigentlich problemlos funktioniert, ist klar. Die Syntax benutze ich so oft, dass wir das sonst längst gemerkt hätten. (Gut, das passiert bei uns natürlich alles in neueren Delphiversionen, aber solche Probleme hatte sicher auch Delphi 7 nicht.)
Eine Idee habe ich aber noch:
@
LittleBen: Hast du das Update auf Delphi 7.1 bei dir installiert? Vielleicht gab es ja ohne Update noch manchmal ein Problem beim Kompilieren. :nixweiss:
LittleBen - Mi 15.02.12 22:35
Mhm...ich bin noch auf Version 7.0 :nixweiss: Werde am Wochenende mal updaten und nochmal probieren.
Tranx - Do 16.02.12 09:31
Also, ich habe das mit meiner Version (Delphi 5) ausprobiert. Es gibt da keinerlei Probleme. Wenn ich 0 als Vorgabewert angebe, ist der Wert in dem Parameter 0, wenn ich keine Variable mit der Funktion übergebe, und bei 1 1 und bei 0 dann wieder O. Voraussetzung ist natürlich - versteht sich von selber - dass man jedesmal das Programm neu kompiliert. Ansonsten, wenn man nur einfach den Wert ändert und dann ohne Kompilierung das Programm startet, kann ja keine Veränderung erfolgen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!