AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language TPoint wird als (0,0) übergeben, abhängig vom Variablennamen

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

Ein Thema von Redeemer · begonnen am 23. Jul 2018 · letzter Beitrag vom 23. Jul 2018
Antwort Antwort
Redeemer
Online

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

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

  Alt 23. Jul 2018, 10: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 10:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 23. Jul 2018, 10:40
Wahrscheinlich gibt es im Objekt TLinie eine Eigenschaft/Feld mit dem Namen P1. Verzichte auf with ... do, um solche Probleme zu vermeiden.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Redeemer
Online

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

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

  Alt 23. Jul 2018, 10:47
Danke, die sind wohl versehentlich ins public gerutscht.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 23. Jul 2018, 10:49
With ist tödlicher als Goto ...

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 23. Jul 2018, 10:50
Danke, die sind wohl versehentlich ins public gerutscht.
Verzichte auf WITH! Das birgt eine Menge an Gefahren und ist seit Jahrzehnten verpönt, nicht ohne Grund, wie Du gerade gemerkt hast.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

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

  Alt 23. Jul 2018, 11:31
Verzichte auf WITH! Das birgt eine Menge an Gefahren und ist seit Jahrzehnten verpönt, nicht ohne Grund, wie Du gerade gemerkt hast.

......
Vielleicht sollte Daniel mal FAQ einrichten, da gibt es bestimmt jede Menge Einträge die nicht tot zu kriegen sind, von if mybool=true then ... über with und goto bis zur Verwendung von vis. Komponenten zur Datenhaltung.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#7

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

  Alt 23. Jul 2018, 11:44
Nicht zu vergessen der Eintrag, dass man FAQs lesen sollte.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 23. Jul 2018, 11:56
Nicht zu vergessen der Eintrag, dass man FAQs lesen sollte.
Das wird Punkt 1, ganz oben in den FAQ.

Und zusätzlich sollte man bei sowas immer zuerst gucken, ob man auch die richtigen Variablen/Felder bekommt. (Code-Insight und Co. verraten einem das ja)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz