Einzelnen Beitrag anzeigen

SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#8

Re: Pointer aus C++ nach Delphi ???

  Alt 7. Sep 2005, 01:37
Bitte, freut mich dass ich helfen kann.

Was der asm-Code macht, sehe ich jetzt auch (die Speicheradresse von @next nach dwError schreiben).

Zitat von goose33:
Noch was :

Code:
DWORD(m_pView) := dwError;
Das is die letzte Zeile unten.
Ich glaub zwar das das so richtig ist aber die beiden * in dem
C++ machen mich ein bischen Stutzig.
Stimmt das denn so ?
Nicht ganz. Das würde den Wert von dwError in die Pointervariable m_pView kopieren. Der Wert soll jedoch an die Speicheradresse kopiert werden, auf die m_pView zeigt:

"(DWORD *) m_pView" entspricht einem Typecast, die Variable m_pView wird nun als Pointer auf ein DWORD angesehen. In Delphi wäre das "PDWORD(m_pView)".

"*(...)" dereferenziert diesen Pointer, damit spricht man das Ziel an, auf das gezeigt wird, und nicht die Pointervariable selbst. In Delphi entspricht das einem angehängten "^".

Komplett also: PDWORD(m_pView)^ := dwError; Wenn m_pView direkt als PDWORD deklariert wäre (m_pView: PDWORD statt m_pView: Pointer), dann könnte man sich den Typecast sparen (m_pView^ := dwError). Je nachdem wie m_pView im restlichen Code benutzt wird, wäre das sinnvoll.

Und sECuRE hat natürlich Recht, wäre besser wenn du den C-Stil nicht 1:1 nach Delphi übersetzt, sondern gleich "ordentlichen" Delphicode daraus machst. Aber das macht noch mehr Arbeit.
  Mit Zitat antworten Zitat