AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Invalid_handle_value

Ein Thema von Alexander I · begonnen am 1. Feb 2017 · letzter Beitrag vom 1. Feb 2017
Antwort Antwort
Seite 1 von 2  1 2   
Alexander I

Registriert seit: 16. Mai 2014
18 Beiträge
 
Delphi XE5 Starter
 
#1

Invalid_handle_value

  Alt 1. Feb 2017, 08:03
Hallo,

ich habe ein Program das ich einmal mit Delphi6 und einmal mit XE5 compiliere.

Es geht um folgende Programmzeilen:
Delphi-Quellcode:
  TCOM = class(TObject)//(TComponent)
  private
    FHandle: Cardinal;
  public
    constructor Create;//(AOwner: TComponent); override;
  end;

implementation

constructor TCOM.Create;//(AOwner: TComponent);
begin
 FHandle := INVALID_HANDLE_VALUE;
// Min cardinal value = 0
// Max cardinal value = 4294967295
end;
Bei Delphi6 ist INVALID_HANDLE_VALUE = 4294967295. Hat also den Maximalwert von Cardinal.
In XE5 ist INVALID_HANDLE_VALUE = 18446744073709551615.

Wieso der hohe Wert bei INVALID_HANDLE_VALUE in XE5?

Nach der Übergabe besitzt FHandle den Wert 4294967295 in XE5.

Danke und Gruß.

Geändert von Alexander I ( 1. Feb 2017 um 08:09 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.378 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Invalid_handle_value

  Alt 1. Feb 2017, 08:05
Hm ...
Ich habe eine Vermutung, aber warum schaust nicht die Deklaration von INVALID_HANDLE_VALUE an
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Invalid_handle_value

  Alt 1. Feb 2017, 08:13
Wenn du einen Handle verwendest solltet du THandle als Typ verwenden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.108 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Invalid_handle_value

  Alt 1. Feb 2017, 08:19
Gib doch mal 18446744073709551615 bei der Suchmaschine deines Vertrauens ein, vielleicht kommst du dann drauf
  Mit Zitat antworten Zitat
Alexander I

Registriert seit: 16. Mai 2014
18 Beiträge
 
Delphi XE5 Starter
 
#5

AW: Invalid_handle_value

  Alt 1. Feb 2017, 08:56
Ist der Grund der Unterschied der Compilierung auf 32bit und 64bit System?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Invalid_handle_value

  Alt 1. Feb 2017, 09:01
Zitat:
Wenn du einen Handle verwendest solltet du THandle als Typ verwenden.
Oder
FHandle : HWND

kommt auf das gleiche raus.

gruss
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.108 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Invalid_handle_value

  Alt 1. Feb 2017, 09:09
Ist der Grund der Unterschied der Compilierung auf 32bit und 64bit System?
Ganz genau das. Aus genau dem Grund sollte man THandle als Datentyp nehmen. Unter Windows haben Dinge wie ComPort-Handles nicht mehr 32, sondern 64 Bit. Cardinal ist allerdings immer 32 Bit. THandle nicht, das ist entweder 32 oder 64 Bit, je nach Plattform.

Oder
FHandle : HWND
kommt auf das gleiche raus.
Es gibt keinen einzigen Grund weshalb man ein CreateFile-Handle in ein HWND ablegen sollte.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Invalid_handle_value

  Alt 1. Feb 2017, 09:14
Zitat:
Es gibt keinen einzigen Grund weshalb man ein CreateFile-Handle in ein HWND ablegen sollte.
Klar weil es für HWND uninteressant ist ob 32 oder 64 Bit Anwendung.
Ich verwende grundsätzlich kein THandle. (Das ist wieder so ein Delphi Ding.)

Aber du kannst es ja machen wie du willst.
Es sei denn ich habe den Zusammenhang nicht richtig verstanden.. Dann sei's so.

In einem jedoch hast du recht ein ungültiges HWND kann nicht mit INVALID_HANDLE_VALUE verglichen werden.
Dafür wäre dann IsWindow(myHWND) zuständig.

gruss

Geändert von EWeiss ( 1. Feb 2017 um 09:25 Uhr)
  Mit Zitat antworten Zitat
Alexander I

Registriert seit: 16. Mai 2014
18 Beiträge
 
Delphi XE5 Starter
 
#9

AW: Invalid_handle_value

  Alt 1. Feb 2017, 09:17
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

AW: Invalid_handle_value

  Alt 1. Feb 2017, 11:43
Zitat:
Es gibt keinen einzigen Grund weshalb man ein CreateFile-Handle in ein HWND ablegen sollte.
Klar weil es für HWND uninteressant ist ob 32 oder 64 Bit Anwendung.
Ich verwende grundsätzlich kein THandle. (Das ist wieder so ein Delphi Ding.)

Aber du kannst es ja machen wie du willst.
Es sei denn ich habe den Zusammenhang nicht richtig verstanden.. Dann sei's so.
Von der technischen Seite her macht es tatsächlich keinen Unterschied, ob du THandle oder HWND verwendest. Semantisch gesehen ist das aber eine andere Sache. HWND ist ein von Microsoft definierter Typ, der explizit für Window-Handles vorgesehen ist. MSDN-Library durchsuchenCreateFile liefert aber ein generisches Handle (bzw. ein File-Handle). Hierfür hat MS den Typ HANDLE eingeführt, für den es in Delphi den Alias THandle gibt.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:14 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