Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Funktion -> C++ (https://www.delphipraxis.net/39595-delphi-funktion-c.html)

moritz 4. Feb 2005 23:53


Delphi Funktion -> C++
 
Hallo Leute,

ich hab mir heute mal die Demo vom Borland C++-Builder geladen. Jetzt versuche ich gerade, folgende Funktion nach C++ zu übersetzten:
Delphi-Quellcode:
function Darken(Value: TColor; Percentage: Byte): TColor;
 type PP = ^DWord;
 var Buffer: Array[0..3] of Byte;
     I: Integer;
 begin
   PP(@Buffer)^ := Value;
   for I:=0 to 2 do
     Buffer[I] := (Buffer[I] * Percentage) DIV 100;
   Result := PP(@Buffer)^;
 end;
Das hier habe ich:
Code:
TColor Darken(TColor Value, Byte Percentage) {
  byte Buffer[3], i;

  (short)(Buffer) = (short)(Value);
  Buffer = &Value;
  for(i=0; i<3; i++)
    Buffer[i] = (Buffer[i] * Percentage) / 100;
  return Buffer;
}
Aber da kommen verschiedene Fehler, und leider habe ich keinen Ansatzpunkt. Kann mir da wer helfen?

Gruß, Moritz

Oxmyx 5. Feb 2005 00:02

Re: Delphi Funktion -> C++
 
Das ist meine Übersetzung der Funktion:

Code:
TColor Darken(TColor value, BYTE percentage)
{
    BYTE buffer[4];

    *(TColor*)buffer = value;

    for(int i = 0; i < 4; i++)
        buffer[i] = (buffer[i] * percentage) / 100;

    return *(TColor*)buffer;
}

moritz 5. Feb 2005 09:49

Re: Delphi Funktion -> C++
 
Vielen Dank! Ich hab nur noch ein Problem mit einer Zeile:
Code:
*(TColor*)buffer = value;
Was macht der Stern ganz am Anfang? :angel2:

sniper_w 5. Feb 2005 10:30

Re: Delphi Funktion -> C++
 
also :

*(TColor*)buffer

(TColor*) bewirkt , das buffer als ein Pointer zu TColor ist. Die Stern ganz links erlaubt dir, dass du das Wert von buffer "erfährst" , d.h. -> "(TColor*) buffer" ist ein Pointer, "*(TColor*)buffer" ist ein Wert an der Stelle von das Pointer zeigt.
Pascal:

var buffer : pointer;


TColor( bufer^ )

tommie-lie 5. Feb 2005 10:56

Re: Delphi Funktion -> C++
 
Zitat:

Zitat von sniper_w
Pascal:

var buffer : pointer;


TColor( bufer^ )

Wohl eher
Delphi-Quellcode:
PColor(buffer)^

sniper_w 5. Feb 2005 11:16

Re: Delphi Funktion -> C++
 
Beide Funct prima :evil:

tommie-lie 5. Feb 2005 11:25

Re: Delphi Funktion -> C++
 
Zitat:

Zitat von sniper_w
Beide Funct prima :evil:

Mag sein, aber letzteres ist die genauere Übersetzung des C-Codes (quasi qörtlich übersetzt *g*).

moritz 5. Feb 2005 11:41

Re: Delphi Funktion -> C++
 
Vielen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 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-2025 by Thomas Breitkreuz