![]() |
Übersetzung einer C++-Zeile
Hallo!
Ich bin gerade dabei, ein C++-Programm nach Delphi zu übersetzen. Bei folgender Zeile hakt es allerdings:
Code:
Val1 ist vom Typ "unsigned int" (entspricht wohl dem Typ Cardinal unter Delphi), ProdKey ist vom Typ "unsigned char", ein Array mit 15 Chars.
Val1 = *(unsigned int *)ProdKey;
Wie wandle ich die Zeile um? |
Re: Übersetzung einer C++-Zeile
OK, ich habs letztendlich durch probieren doch noch herausgefunden.
Obige C++-Zeile liefert das gleiche Ergebnis wie folgende Delphi-Zeilen:
Delphi-Quellcode:
Val1 := Ord(ProdKey[4]);
Val1 := Val1 * 256 + Ord(ProdKey[3]); Val1 := Val1 * 256 + Ord(ProdKey[2]); Val1 := Val1 * 256 + Ord(ProdKey[1]); |
Re: Übersetzung einer C++-Zeile
Oder das selbe wie diese:
Delphi-Quellcode:
Das ist auch die korrekte Übersetzung für das, was da oben steht - sofern ich mich nicht irre ;)
Val1 := PCardinal(@Prodkey[1])^;
|
Re: Übersetzung einer C++-Zeile
Zitat:
ProdKey ist ein Pointer auf den Array. dieser Pointer wird umgecastet in einen Pointer auf ein unsigned int und dann dereferenziert, womit man den Wert der Stelle bekommt, auf den der Pointer zeigt. |
Re: Übersetzung einer C++-Zeile
ste_ett: genau.
Richtig wäre:
Code:
sofern gilt:
Val1 := PCardinal(@ProdKey[0])^;
Code:
var ProdKey:array[0..15]of Char;
|
Re: Übersetzung einer C++-Zeile
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 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