Typenumwandlungen

Gctwo

Grünschnabel
Hi!

Ich hatte schon öfters Probleme mit den Typen - gibt's nen Überblick über die Möglichkeiten ?

Hier mal zu meinem konkreten Problem:
Ich will eine DLL machen und bekomme vom Programm ein Double, welches ich zu hwnd konvertieren möchte. (das programm/die andere programmiersprache bei der ich es einbinden möchte unterstützt nur PChar, double und real)
Wie kann ich das machen?
 
Grundsätzlich kannst du einen Typ zu JEDEM beliebigen anderen machen, sogar wenn der Compiler den entsprechenden Cast nicht unterstützt: Hierfür musst du dir die Adresse des umzuwandelnden Objekts nehmen und diese Adresse zu einem Zeiger auf den Zieltyp casten. Allerdings musst du hierbei genau über die Speicherformate der jeweiligen Typen bescheid wissen.

Bei Casts, die direkt vom Compiler unterstützt werden, genügt es, den gewünschten Typ wie eine Funktion zu benutzen, mit dem umzuwandelnden Objekt als Parameter:

Code:
var
  i: Integer ;
  j: ShortInt ;
...
j := ShortInt( i ) ;

Wobei im obigen Beispiel der Compiler den Cast auch von selbst durchführen würde; allerdings gibt es Situationen, in denen man manuell casten muss, weil der Compiler sonst Code erzeugt, der zu einem Runtime-Error führt.

Jetzt weißt du alles, was du brauchst, um den Double in ein HWND umzuformen. Zum Double kann ich dir sagen, dass du ihn gefahrlos zu einem HWND casten kannst. Denke daran, dass ein HWND nichts weiter ist als ein Int32.

Gawayn
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück