Autor Beitrag
BeniSchindler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win 2k / suse9.1
D7 Prof / Kylix 3
BeitragVerfasst: Mi 24.11.04 16:56 
Holla,

ich bin mit meinem Object-Pascal am ende. Ich habe eigentlich eine ganz einfach Prozedur geschrieben, die 2 Variablen übergeben bekommt. Die 2. Variable hat einen default Wert zugewiesen. Wenn ich nun die Prozedur ohne die übergabe der Variable aufrufe, hat die Variable jedoch nicht den default Werte zugewiesen sondern 0???!!!!

Also das ganze sieht so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure AllesUebergeben(AAnzeigeDataSet:TDataSet; AMinDauer : integer = 999);
var
  ASQLString : string;
begin
  ASQLString := Format('Select * from x where a > %d',[AMinDauer]);
  [...]
end;

Procedure TForm1.A;
begin
  AllesUebergeben(EinInstanzVonTDataSet);
end;


Kann mir jemand sagen wo der Compiler das 0 herbekommt? Kennt jemand diesen Fehler?

Achja und ich habe bereits die dcu gelöscht und den Quellcode per Build und nicht per Compile compiliert. Und die Variable existiert nirgend wo anders im Quellcode. :?

_________________
Result := 42; Application.ProcessMessages;
herzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 168

WINXP pro, SUSE Linux 9.0
D7 Pers.
BeitragVerfasst: Mi 24.11.04 18:20 
Habs grad mal bei mir getestet, hier funzt es! :?: :!:

Versuch mal ne andere Prozedurm, wo du dir einfach nur diesen Wert anzeigen lässt...
BeniSchindler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win 2k / suse9.1
D7 Prof / Kylix 3
BeitragVerfasst: Mi 24.11.04 18:50 
OK, mein prog läuft wieder wie es soll.

Die Lösung stimmt mich allerdings nicht unbedingt froh.
Also ich habe die Variable umbenannt. Dann compiliert. Und dann die Variable wieder zurück benannt.
Und seit dem hat er auch wieder den richtigen default Wert.

Allerdings will ich nicht wissen, was da der Compiler vorher gemacht hat. :shock: Kann man sich da noch sicher sein,
ob Delphi wirklich das compiliert was man proggt? :gruebel:

cu.

und noch mal danke fürs drüber nachdenken.

_________________
Result := 42; Application.ProcessMessages;
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mi 24.11.04 19:04 
BeniSchindler hat folgendes geschrieben:
Allerdings will ich nicht wissen, was da der Compiler vorher gemacht hat.
Vielleicht hat die Kiste sich nur mal kurz verschluckt. Wobei - auch dann ist noch die Frage, wer Schuld hat. Im Zweifel immer Windows. :lol:

BeniSchindler hat folgendes geschrieben:
Kann man sich da noch sicher sein,
ob Delphi wirklich das compiliert was man proggt

Meistens schon.

Aber es ist definitiv möglich, das Traumpaar Windows&Delphi zu "überfordern". Da hilft dann manchmal nur noch, Delphi oder gar den ganzen PC neu zu starten.

Und einmal habe ich's gehabt, da habe ich drei Code-Zeilen rausgeschmissen und sie Punkt für Punkt und Komma für Komma an der gleichen Stelle wieder reingeschrieben. Vorher lief's nicht. Danach funktionierte das Programm wieder. :?