Autor Beitrag
LittleBen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Fr 10.02.12 20:23 
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
ausblenden Delphi-Quelltext
1:
function Test(nZahl: byte=0): boolean;					

Funktion
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function TF_Main.Test(nZahl: byte=0): boolean; // oder nur "(nZahl: byte)" 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Sa 11.02.12 00:05 
Ok...ich fang gar nicht erst an mit der Bequemlichkeit :D Gibt eh nur Probleme!
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 11.02.12 10:46 
user profile iconLittleBen hat folgendes geschrieben Zum zitierten Posting springen:
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
ausblenden Delphi-Quelltext
1:
function Test(nZahl: byte=0): boolean;					

Funktion
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function TF_Main.Test(nZahl: byte=0): boolean; // oder nur "(nZahl: byte)" 
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:

ausblenden 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();
     //Ergebnis := Test(Wert);
end;


Das funktioniert so, wie es soll ... :?!?:
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
@user profile iconLittleBen: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Mi 15.02.12 22:35 
Mhm...ich bin noch auf Version 7.0 :nixweiss: Werde am Wochenende mal updaten und nochmal probieren.
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: 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.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.