Delphi-Version: 5
Procedur verstehen
Hallo Leute,
in Delphi 10 gibt es folgende Prozedur:
Code:
Es handelt sich dabei um ein Ereignis einer Komponente.
procedure TForm1.Layout1Paint(Sender: TObject; Canvas: TCanvas;
const [Ref] ARect: TRectF); begin end; Kann mir bitte einer diese Prozedur erläutern, genauer gesagt die Parameter. Sender ist klar. Canvas ist klar. Was zum Kuckuck bedeutet
Code:
Was bedeutet [REF], vielleicht Referenz?
const [REF]
Wäre etwas merkwürdig, eine konstante Referenz! Gruß |
AW: Procedur verstehen
Hallo,
kurze Google-Suche http://docwiki.embarcadero.com/RADSt...ameter_(Delphi) Dort nach [Ref] suchen und wundern/bewundern ;) |
AW: Procedur verstehen
Danke für deine Mühe und den sehr hilfreichen Link. Sehr Interessant.
Damit alle etwas davon haben füge ich den Inhalt des Links hier 1 zu 1 ein: Parameter (Delphi Diese Seite enthält momentan noch keinen Text und du bist auch nicht dazu berechtigt, diese Seite zu erstellen. Du kannst ihren Titel auf anderen Seiten suchen oder die zugehörigen Logbücher betrachten. Eine Erklärung wäre noch immer hilfreich! Gruß |
AW: Procedur verstehen
Nimm das [ref] einfach weg. Ich kann mir nicht vorstellen, dass das dahin gehört.
https://pascal.today/2016/08/17/cons...-vs-non-const/ Zitat:
|
AW: Procedur verstehen
hallo,
vieleicht hilft dies (Laut Link #2) Konstantenparameter Ein Konstantenparameter (const) entspricht einer lokalen bzw. schreibgeschützten Variable. Konstantenparameter entsprechen weitgehend Wertparametern. Sie können ihnen jedoch im Rumpf einer Prozedur oder Funktion keinen Wert zuweisen und sie nicht als var-Parameter an eine andere Routine übergeben. Wenn Sie aber eine Objektreferenz als Konstantenparameter übergeben, können Sie weiterhin auf die Objekteigenschaften zugreifen und diese ändern. Die Verwendung von const ermöglicht dem Compiler die Optimierung des Codes für strukturierte und String-Parameter. Gleichzeitig wird die versehentliche Übergabe eines Parameters als Referenz an eine andere Routine verhindert. Das folgende Beispiel ist der Header der Funktion CompareStr in der Unit SysUtils: function CompareStr(const S1, S2: string): Integer; Da S1 und S2 im Rumpf von CompareStr nicht geändert werden, können sie als Konstantenparameter deklariert werden. Konstantenparameter können je nach verwendetem Compiler an die Funktion per Wert oder per Referenz übergeben werden. Um den Compiler zu veranlassen, einen Konstantenparameter per Referenz zu übergeben, können Sie den Dekorator [Ref] mit dem Schlüsselwort const verwenden. Das folgende Beispiel zeigt, wie Sie den Dekorator [Ref] entweder vor oder nach dem Schlüsselwort const angeben können: function FunctionName(const [Ref] parameter1: Class1Name; [Ref] const parameter2: Class2Name); Gruß |
AW: Procedur verstehen
Danke DieDolly,
o.k. Verstanden. Ab einer bestimmten Größe wird der Wert als Referenz übergeben. Das hätte mir als Antwort schon gereicht. Was du mit wegnehmen meinst ist mir allerdings nicht klar. Nächstes Problem: Der übergebene Wert wird in der Prozedur ignoriert. Ich rufe DoPaint auf und übergebe als Parameter ein Canvas und ein Rect. Dennoch enthält ARect aus der oben genannten Procedure nicht die übergebenen Werte(Maße), sonder die Werte(Maße) der bereitstellenden Komponente, in diesem Fall der Komponente Layout1. Jemand eine Idee, aus welchem Grund der an ARect übergebene Wert nicht übernommen wird? Gruß |
AW: Procedur verstehen
Danke Heuman
|
AW: Procedur verstehen
Die Frage warum der Wert nicht übergeben wird, ist noch offen.
Nur falls jemand wegen des Dankes meint die Sache sei erledigt. Weitere Frage: Die
Delphi-Quellcode:
erwartet als Parameter ein Canvas.
procedure TForm1.Layout1Paint(Sender: TObject; Canvas: TCanvas;
const [Ref] ARect: TRectF); Erstelle ich in diesem onPaint-Ereignis ein Rechteck ohne vorher ein Canvas beim Aufruf der Prozedur zu übergeben, wird dennoch ein Rechteck gezeichnet. Warum? Gruß |
AW: Procedur verstehen
Zitat:
Gruß K-H |
AW: Procedur verstehen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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