![]() |
Typenfehler bei Wechsel von D7->XE10.1
Ich habe eine ältere Anwendung, die bisher noch unter D7 gepflegt wurde. Diese soll jetzt auf 10.1 compiliert werden.
Dabei tritt eine "für mich" nicht erklärbarer Fehler auf. Meiner Meinung nach sollte doch das hier soweit korrekt sein, oder sehe ich das falsch?
Delphi-Quellcode:
procedure ShutDown;
var hToken: Cardinal; begin if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin // <--- [dcc32 Fehler] Main.pas(6268): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen . . end; |
AW: Typenfehler bei Wechsel von D7->XE10.1
Zitat:
Edit: OK, da steht er ja. Wurden wohl andere Typen im neuen Delphi für diese Funktion deklariert...Muß wahrscheinlich ein anderer Integertyp deklariert werden, auf Anhieb weiß ich jetzt nicht, wie der heißt. Schau mal in meinen "Prozeßbetrachter", da funktioniert es. Edit2: Mist, andere waren schneller. NativeUInt fiel mir auch gerade ein. |
AW: Typenfehler bei Wechsel von D7->XE10.1
So sollte es gehen:
Delphi-Quellcode:
var
hToken: THandle; |
AW: Typenfehler bei Wechsel von D7->XE10.1
nein, passt nicht - einfach mal die Signatur der Prozedur in Delphi anschauen - das muss ein NativeUInt sein....
|
AW: Typenfehler bei Wechsel von D7->XE10.1
aus Windows.pas
Delphi-Quellcode:
function OpenProcessToken(ProcessHandle: THandle; DesiredAccess: DWORD;
var TokenHandle: THandle): BOOL; stdcall; |
AW: Typenfehler bei Wechsel von D7->XE10.1
Zitat:
|
AW: Typenfehler bei Wechsel von D7->XE10.1
Zitat:
Grundsätzlich war Cardinal ja mal richtig für THandle und solange das Programm nur für 32 Bit compiliert wird sollte es auch kein Problem geben... ABER (ja da ist immer ein "aber") sobald man das ganze für 64bit compilieren möchte wird es böse! Daher kann ich nur empfehlen, immer in der windows.pas nachzusehen welche Parametertypen verwendet werden und diese auch unbedingt einzusetzen (das gilt insbesondere für HRESULT, LPARAM, WPARAM, LRESULT, THandle, usw.)! |
AW: Typenfehler bei Wechsel von D7->XE10.1
THandle....das war's. Wer lesen kann, ist klar im Vorteil. Danke an alle.
|
AW: Typenfehler bei Wechsel von D7->XE10.1
Zitat:
|
AW: Typenfehler bei Wechsel von D7->XE10.1
Auch wenn THandle früher mal Cardinal war ...
Tja, hätte man damals den "richtigen" Typen (THandle) verwendet, hätte die Umstellung keine Probleme bereitet. Das Selbe wie bei Unicode, hätte man die richtigen Typen genommen, wären über 95% der Codes ohne große Änderungen auch sofort in D2009+ gelaufen. :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz