Also ich habe das Problem, dass ein TPoint als (0,0) übergeben wird, wenn die Variable, die als Parameter übergeben wird, einen bestimmten Namen hat. Die aufgerufene Prozedur ist in einer anderen
Unit wie folgt deklariert:
procedure SetzeGroesse2(X1, X2: TPoint);
Das Ändern der Namen der aufgerufenen Prozedur und ihrer Parameter oder eine komplett neue Erzeugung brachten keine Lösung. In der aufrufenden
Unit ist kein anderer Bezeichner namens P1 vorhanden. Ich war nicht in der Lage, ein Minimalbeispiel zu erstellen.
Vielleicht steh ich auf dem Schlauch - oder ich hab einen Bug im Compiler gefunden...
Delphi-Quellcode:
procedure TFrameKonstruktion.ZeichnenSetzeEndpunkt(P: TPoint);
var
P1: TPoint;
begin
P1 := ZeichenpunktStart;
// hier sollen später noch einige weitere Transformationen mit P1 durchgeführt werden
with TLinie.Create(Fenster.Zeichenobjekte, AktuellesZeichenformat) do
SetzeGroesse2(P1, P); // übergibt (0,0), (P.X, P.Y)
end;
Ich weiß aus dem Debugger, dass P1 in der aufrufenden Prozedur nicht (0,0) ist, aber in der aufgerufenen Prozedur ist er (0,0).
Folgende Syntaxen funktionieren hingegen:
Delphi-Quellcode:
procedure TFrameKonstruktion.ZeichnenSetzeEndpunkt(P: TPoint);
var
P0: TPoint;
begin
P0 := ZeichenpunktStart;
// hier sollen später noch einige weitere Transformationen mit P0 durchgeführt werden
with TLinie.Create(Fenster.Zeichenobjekte, AktuellesZeichenformat) do
SetzeGroesse2(P0, P); // übergibt (P0.X, P0.Y), (P.X, P.Y)
end;
Delphi-Quellcode:
procedure TFrameKonstruktion.ZeichnenSetzeEndpunkt(P: TPoint);
begin
with TLinie.Create(Fenster.Zeichenobjekte, AktuellesZeichenformat) do
SetzeGroesse2(ZeichenpunktStart, P); // übergibt (ZeichenpunktStart.X, ZeichenpunktStart.Y), (P.X, P.Y)
end;