AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memeber Acces Operators in Delph

Ein Thema von Virchov · begonnen am 23. Mär 2004 · letzter Beitrag vom 24. Mär 2004
Antwort Antwort
Seite 1 von 2  1 2      
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#1

Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 17:00
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:

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;
}
Also, die Deklaration ist mir klar, wie das geht, vielmehr interessiert mich die Umsetzung der 3 Zeilen zwischen den Klammern

Danke!
  Mit Zitat antworten Zitat
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#2

Re: Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 17:04
Vielleicht so:

*R=^prgb.rgbtRed;

??
  Mit Zitat antworten Zitat
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#3

Re: Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 17:15
Delphi-Quellcode:

 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;
Oder vielleicht So?
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#4

Re: Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 17:17
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;
  Mit Zitat antworten Zitat
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#5

Re: Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 17:19
Zitat von Virchov:
Delphi-Quellcode:

 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;
Oder vielleicht So?

Danke. Könntest Du mir vielleicht den Unterschied zwischen Deinem und meinem Ansatz erläutern?
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 17:21
@ Virchov: R, G und B sind Zeiger auf Byte-Werte. Du weist diesen Zeigern aber die Werte selbst zu, nicht die Adressen!
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#7

Re: Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 17:24
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....
  Mit Zitat antworten Zitat
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#8

Re: Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 17:27
Zitat von Chewie:
@ Virchov: R, G und B sind Zeiger auf Byte-Werte. Du weist diesen Zeigern aber die Werte selbst zu, nicht die Adressen!

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?
  Mit Zitat antworten Zitat
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#9

Re: Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 17:32
Und das? Ich bin völlig verwirrt....
Delphi-Quellcode:
  R^:=prgb^.rgbtRed; ;
  G^:=prgb^.rgbtGreen;
  B^:=prgb^.rgbtBlue;
Ist das nicht dasselbe wie

Delphi-Quellcode:
  R:=prgb^.rgbtRed; ;
  G:=prgb^.rgbtGreen;
  B:=prgb^.rgbtBlue;
das hier?
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Memeber Acces Operators in Delph

  Alt 23. Mär 2004, 18:07
@ 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:
R^:=prgb^.rgbtRed; ;
  G^:=prgb^.rgbtGreen;
  B^:=prgb^.rgbtBlue;
Zunächst: prgb^.rgbtRed ist das gleiche wie prgb.rgbtRed.
Du weißt also der Speicherstelle, auf die R zeigt, den Wert von prgb.rgbtRed zu.

Delphi-Quellcode:
R:=prgb^.rgbtRed; ;
G:=prgb^.rgbtGreen;
B:=prgb^.rgbtBlue;
Hier weißt du der Variable R den Wert im Record zu.

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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:46 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