Einzelnen Beitrag anzeigen

Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#1

TPoint wird als (0,0) übergeben, abhängig vom Variablennamen

  Alt 23. Jul 2018, 09:33
Delphi-Version: 2010
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;
Janni
2005 PE, 2009 PA, XE2 PA

Geändert von Redeemer (23. Jul 2018 um 09:37 Uhr)
  Mit Zitat antworten Zitat