Thema: Delphi DWORD oder Cardinal

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 7. Feb 2003, 18:26
Moin Chris,

HWND und DWORD sind beide als LongWord deklariert (siehe auch Windows.pas)

Bei einem 32 Bit Compiler ist hat LongWord die gleiche Bedeutung wie Cardinal.

Alle diese drei Werte entsprechen also, bei einem 32 Bit Compiler, einem 32 Bit Wert ohne Vorzeichen.

Da HWND und DWORD in der Windows API allerdings üblich sind, werden oft diese verwendet (statt Longword).

Ein wesentlicher Unterschied zu C und Pascal:
Wird da als Typ, z.B., ein HWND vorgegeben bei einer Funktion, dann fängt der C-Compiler i.d.R. an zu meckern, wenn man statt dessen eine Variable vom Typ DWORD angibt, während Delphi das kommentarlos schluckt.

Es wäre zwar schön, wenn auch Delphi hier so stur wäre, so dass man gezielt einen Typecast durchführen müsste (was den Code dann auch besser dokumentieren würde, bzw. wodurch einem auffällt, dass man etwas falsches angibt), aber leider funktioniert die dafür vorgesehene Technik, zumindest unter D5, nicht so recht.

HWND ist so deklariert:

Delphi-Quellcode:
type
  HWND = type Longword;
Dieses = type Longword soll eigentlich dafür sorgen, dass ein direkter Austausch von DWORD und HWND Werten nicht ohne Typecast möglich ist, aber das hab' ich so leider bislang nie zum Laufen bekommen. (entweder ich find' nur die Option nicht, oder es geht tatsächlich nicht)

Zum Thema cardinal kannst Du hier übrigens bestimmt weitere Infos finden, wenn Du mal nach "generisch*" suchst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat