AGB  ·  Datenschutz  ·  Impressum  







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

Delphi Funktion -> C++

Ein Thema von moritz · begonnen am 5. Feb 2005 · letzter Beitrag vom 5. Feb 2005
Antwort Antwort
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#1

Delphi Funktion -> C++

  Alt 5. Feb 2005, 00:53
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
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#2

Re: Delphi Funktion -> C++

  Alt 5. Feb 2005, 01:02
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;
}
  Mit Zitat antworten Zitat
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#3

Re: Delphi Funktion -> C++

  Alt 5. Feb 2005, 10:49
Vielen Dank! Ich hab nur noch ein Problem mit einer Zeile:
Code:
*(TColor*)buffer = value;
Was macht der Stern ganz am Anfang?
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Delphi Funktion -> C++

  Alt 5. Feb 2005, 11:30
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^ )
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#5

Re: Delphi Funktion -> C++

  Alt 5. Feb 2005, 11:56
Zitat von sniper_w:
Pascal:

var buffer : pointer;


TColor( bufer^ )
Wohl eher PColor(buffer)^
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Delphi Funktion -> C++

  Alt 5. Feb 2005, 12:16
Beide Funct prima
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#7

Re: Delphi Funktion -> C++

  Alt 5. Feb 2005, 12:25
Zitat von sniper_w:
Beide Funct prima
Mag sein, aber letzteres ist die genauere Übersetzung des C-Codes (quasi qörtlich übersetzt *g*).
  Mit Zitat antworten Zitat
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#8

Re: Delphi Funktion -> C++

  Alt 5. Feb 2005, 12:41
Vielen Dank!
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:34 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