AGB  ·  Datenschutz  ·  Impressum  







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

Übersetzung einer C++-Zeile

Ein Thema von ultrasombrero · begonnen am 3. Dez 2006 · letzter Beitrag vom 3. Dez 2006
Antwort Antwort
ultrasombrero

Registriert seit: 11. Sep 2005
23 Beiträge
 
#1

Übersetzung einer C++-Zeile

  Alt 3. Dez 2006, 00:46
Hallo!

Ich bin gerade dabei, ein C++-Programm nach Delphi zu übersetzen.

Bei folgender Zeile hakt es allerdings:

Code:
Val1 = *(unsigned int *)ProdKey;
Val1 ist vom Typ "unsigned int" (entspricht wohl dem Typ Cardinal unter Delphi), ProdKey ist vom Typ "unsigned char", ein Array mit 15 Chars.

Wie wandle ich die Zeile um?
  Mit Zitat antworten Zitat
ultrasombrero

Registriert seit: 11. Sep 2005
23 Beiträge
 
#2

Re: Übersetzung einer C++-Zeile

  Alt 3. Dez 2006, 01:11
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]);
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Übersetzung einer C++-Zeile

  Alt 3. Dez 2006, 01:35
Oder das selbe wie diese:Val1 := PCardinal(@Prodkey[1])^; Das ist auch die korrekte Übersetzung für das, was da oben steht - sofern ich mich nicht irre
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#4

Re: Übersetzung einer C++-Zeile

  Alt 3. Dez 2006, 08:52
Zitat von Dax:
Oder das selbe wie diese:Val1 := PCardinal(@Prodkey[1])^; Das ist auch die korrekte Übersetzung für das, was da oben steht - sofern ich mich nicht irre
Du irrst nicht.

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.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

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

Re: Übersetzung einer C++-Zeile

  Alt 3. Dez 2006, 09:19
ste_ett: genau.
Richtig wäre:
Code:
Val1 := PCardinal(@ProdKey[0])^;
sofern gilt:
Code:
var ProdKey:array[0..15]of Char;
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
ultrasombrero

Registriert seit: 11. Sep 2005
23 Beiträge
 
#6

Re: Übersetzung einer C++-Zeile

  Alt 3. Dez 2006, 12:09
Zitat von sniper_w:
ste_ett: genau.
Richtig wäre:
Code:
Val1 := PCardinal(@ProdKey[0])^;
sofern gilt:
Code:
var ProdKey:array[0..15]of Char;
Naja, das gilt eben nicht mehr, da ich in meiner Übersetzung aus dem Array of Char einen String gemacht habe, und der fängt ja eben bei 1 an zu zählen.
  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 17:50 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