![]() |
Memeber Acces Operators in Delph
Tach!
ich habe ein klitzekleines Prozedürchen in Delphi umzusetzen. Da kommt dieses M.A.O. -> vor. Wie könnte das hier in Delphi aussehhen
Delphi-Quellcode:
Also, die Deklaration ist mir klar, wie das geht, vielmehr interessiert mich die Umsetzung der 3 Zeilen zwischen den Klammern :gruebel: void GetRGB( RGBTRIPLE* prgb, //Pointer to the pixel BYTE *R, BYTE *G, BYTE *B) //Output: R, G and B { *R=prgb->rgbtRed; *G=prgb->rgbtGreen; *B=prgb->rgbtBlue; } Danke! |
Re: Memeber Acces Operators in Delph
Vielleicht so:
*R=^prgb.rgbtRed; ?? |
Re: Memeber Acces Operators in Delph
Delphi-Quellcode:
Oder vielleicht So? :angle2:implementation procedure GetRGB( prgb: pRGBTRIPLE; //Pointer to the pixel R,G,B: pBYTE); //Output: R, G and B begin R^:=prgb.rgbtRed; G^:=prgb.rgbtGreen; B^:=prgb.rgbtBlue; end; |
Re: Memeber Acces Operators in Delph
Code:
void GetRGB(
RGBTRIPLE* prgb, //Pointer to the pixel BYTE *R, BYTE *G, BYTE *B) //Output: R, G and B { *R=prgb->rgbtRed; *G=prgb->rgbtGreen; *B=prgb->rgbtBlue; }
Delphi-Quellcode:
Procedure GetRGB(Const prgb : PRGBTRIPLE;Var R,G,B : Byte);
Begin R:=prgb^.rgbtRed; G:=prgb^.rgbtGreen; B:=prgb^.rgbtBlue; end; |
Re: Memeber Acces Operators in Delph
Zitat:
Danke. Könntest Du mir vielleicht den Unterschied zwischen Deinem und meinem Ansatz erläutern? :wall: |
Re: Memeber Acces Operators in Delph
@ Virchov: R, G und B sind Zeiger auf Byte-Werte. Du weist diesen Zeigern aber die Werte selbst zu, nicht die Adressen!
|
Re: Memeber Acces Operators in Delph
während ich meinen Beitrag geschrieben habe, bist Du mit Deinem zuvorgekommen... grundsätzlich ist es das selbe... der Unterschied ist die Art der Wertrückgabe von R,G und B... in C verwendet man häufig Pointer (BYTE*) zur Wertrückgabe, während im Delphi dazu das VAR-Schlüsselwort verwendet werden kann... Du hast nun diese Art der Wertrückgabe übernommen, ich habe sie auf die Delphi-übliche Variante realisiert.... im Assembler-Code würden beide Ansätze nahezu identisch aussehen....
|
Re: Memeber Acces Operators in Delph
Zitat:
Hmmm. Verstehe ich Dich richtig: ^R ist ein Pointer auf Pointer auf pByte; R ist ein Pointer auf pByte; R^ ist die pByte- Variable, auf die der Pointer zeigt Richtig? :oops: |
Re: Memeber Acces Operators in Delph
Und das? Ich bin völlig verwirrt....
Delphi-Quellcode:
Ist das nicht dasselbe wie
R^:=prgb^.rgbtRed; ;
G^:=prgb^.rgbtGreen; B^:=prgb^.rgbtBlue;
Delphi-Quellcode:
das hier? :duck:
R:=prgb^.rgbtRed; ;
G:=prgb^.rgbtGreen; B:=prgb^.rgbtBlue; |
Re: Memeber Acces Operators in Delph
@ Virchov: Also: R, G und B sind vom Typ PByte, das sollte ein Pointer auf einen Byte-Wert sein.
prgb ist ein Pointer pRGBTRIPLE. Dieses enthält wohl drei Byte-Werte.
Delphi-Quellcode:
Zunächst: prgb^.rgbtRed ist das gleiche wie prgb.rgbtRed.
R^:=prgb^.rgbtRed; ;
G^:=prgb^.rgbtGreen; B^:=prgb^.rgbtBlue; Du weißt also der Speicherstelle, auf die R zeigt, den Wert von prgb.rgbtRed zu.
Delphi-Quellcode:
Hier weißt du der Variable R den Wert im Record zu.
R:=prgb^.rgbtRed; ;
G:=prgb^.rgbtGreen; B:=prgb^.rgbtBlue; Ich hab übrigens da oben Mist geschrieben, vergesst das. Die Lösung von Basilikum entspricht allerdings der deinen, da er die Parameter als Referenz abruft. Dadurch kann er mit ihnen hantieren, als wären es Wertvariabeln, allerdings sind es Zeigervariablen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz