Wird ein internes Problem sein worauf ich bei uns gestoßen bin. Es werden diverse Defines gesetzt wie z.B. DELPHI4, DELPHI6, etc. die man für Verzweigungen nutzten kann. Da bin ich jetzt aber am Aufräumen, da eh nur noch Delphi 2010 oder neuer noch unterstützt wird.
Ist ja auch richtig so, da THandle von der Platform (x32/x64) abhängt.
WinAPI funktionen sollten die Paraemter trotzdem akzeptieren
Delphi-Quellcode:
var
msg: NativeUInt;
begin
PostMessage( 0, msg, 1, 2);
end;
funktioniert z.B. auch wenn der Parameter msg ein Cardinal erwartet
Dein Code funktioniert bei mir auch, aber z.B. folgender nicht:
Delphi-Quellcode:
var
FThreadID: THandle;
FHandle: THandle;
begin
FHandle := BeginThread(nil, 0, nil, Pointer(Self), CREATE_SUSPENDED, FThreadID);
end;
Damit dieser geht, muss ich FThreadID auf Cardinal oder TThreadID (LongWord) setzen. THandle oder NativeUInt verweigert der Compiler.
Oder der hier (verlangt ebenfalls Cardinal):
Delphi-Quellcode:
var
Size, FixInfoLen: DWORD;
Handle: THandle;
begin
Size := GetFileVersionInfoSize(PWideChar(Application.ExeName),
Handle);
Aktuell ist die Krux. Besser jetzt so machen, dass es unter x64 auch funktionieren könnte.
Wir arbeiten dran.
Aber bei über 1 Million Zeilen Code einer mittlerweile 14 Jahre gereiften Software leider nicht immer ganz einfach (bei der Migration auf Delphi 2010 wurde da aber schon sehr viel verbessert oder ausgetauscht).