AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Typenfehler bei Wechsel von D7->XE10.1
Thema durchsuchen
Ansicht
Themen-Optionen

Typenfehler bei Wechsel von D7->XE10.1

Ein Thema von Captnemo · begonnen am 10. Feb 2017 · letzter Beitrag vom 11. Feb 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 12:13
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;
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 12:21
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.
Richtig und falsch sind eben relativ (zur Delphi-Version). Viel interessanter als "nicht erklärbarer" wäre gewesen, welcher Fehler konkret auftritt.

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.

Geändert von Delphi-Laie (10. Feb 2017 um 12:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

AW: Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 12:31
So sollte es gehen:

Delphi-Quellcode:
var
  hToken: THandle;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 12:32
nein, passt nicht - einfach mal die Signatur der Prozedur in Delphi anschauen - das muss ein NativeUInt sein....
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 12:33
aus Windows.pas

Delphi-Quellcode:
function OpenProcessToken(ProcessHandle: THandle; DesiredAccess: DWORD;
  var TokenHandle: THandle): BOOL; stdcall;
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 12:42
nein, passt nicht - einfach mal die Signatur der Prozedur in Delphi anschauen - das muss ein NativeUInt sein....
Das deutet jetzt auf die übliche Diskrepanz zwischen Theorie und Praxis hin Nicht alles, was der Hint anzeigt steht auch wirklich so da.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 13:10
... Nicht alles, was der Hint anzeigt steht auch wirklich so da.
Ja so ist das.. auf nichts ist mehr Verlass

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.)!
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#8

AW: Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 14:04
THandle....das war's. Wer lesen kann, ist klar im Vorteil. Danke an alle.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 14:18
nein, passt nicht - einfach mal die Signatur der Prozedur in Delphi anschauen - das muss ein NativeUInt sein....
Das deutet jetzt auf die übliche Diskrepanz zwischen Theorie und Praxis hin Nicht alles, was der Hint anzeigt steht auch wirklich so da.
das ist sicherlich richtig - wobei ich zu meiner Verteidigung anbringen möchte, dass sich das "nein, passt nicht" auf das "Meiner Meinung nach sollte doch das hier soweit korrekt sein, oder sehe ich das falsch?" im Ausgangspost bezog und nicht auf deinen Post, der sich irgendwie ohne Meldung dazwischen geschmuggelt hat
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Typenfehler bei Wechsel von D7->XE10.1

  Alt 10. Feb 2017, 19:59
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz