Einzelnen Beitrag anzeigen

Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#3

AW: THandle und WinAPI unter XE2

  Alt 31. Jul 2012, 13:01
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).
Manuel
  Mit Zitat antworten Zitat