AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Invalid_handle_value

Ein Thema von Alexander I · begonnen am 1. Feb 2017 · letzter Beitrag vom 1. Feb 2017
Antwort Antwort
Der schöne Günther

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

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
 
#2

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
Benutzerbild von Zacherl
Zacherl

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

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
Der schöne Günther

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

AW: Invalid_handle_value

  Alt 1. Feb 2017, 12:04
Das ist im Endeffekt das gleiche wie als irgendjemand vor 15 Jahren gesagt hat "Von der technischen Seite her macht es tatsächlich keinen Unterschied, ob du THandle oder Cardinal verwendest."
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

AW: Invalid_handle_value

  Alt 1. Feb 2017, 12:23
Das ist im Endeffekt das gleiche wie als irgendjemand vor 15 Jahren gesagt hat "Von der technischen Seite her macht es tatsächlich keinen Unterschied, ob du THandle oder Cardinal verwendest."
Naja MSDN sagt folgendes:
Code:
typedef void *PVOID;
typedef PVOID HANDLE;
typedef HANDLE HWND;
Macht in diesem Falle also tatsächlich auch in der Zukunft keinen Unterschied, sofern die Definition von HWND beibehalten wird (was aus Gründen der Abwärtskompatibilität sicherlich geschieht).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Invalid_handle_value

  Alt 1. Feb 2017, 13:32
sofern die Definition von HWND beibehalten wird
Nja, oder so lange sich HANDLE nicht ändert, denn auch wenn es "aktuell" der gleiche Typ ist, muß das nicht so bleiben.

z.B. könnte HWND in Zukunft 32 Bit bleiben,
aber HANDLE könnte man auf 64 Bit ändern.

PS: Für SendMessage gibt es eigentlich auch die Typen LPARAM, WPARAM und LRESULT, die Delphi zwar kennt, aber die fast niemand verwendet, noch nichtmal Delphi.



Ein Problem ist auch, das die Codevervollständigung und CodeInsight/HelpInsight den Namen des Basistypen aber nicht des verwendeten "Alias" anzeigen.
Außer man definiert etwas explizit nicht als Alias, sondern als neuer (abgeleiteter) Typ.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 1. Feb 2017 um 13:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

AW: Invalid_handle_value

  Alt 1. Feb 2017, 13:49
Nja, oder so lange sich HANDLE nicht ändert, denn auch wenn es "aktuell" der gleiche Typ ist, muß das nicht so bleiben.

z.B. könnte HWND in Zukunft 32 Bit bleiben,
aber HANDLE könnte man auf 64 Bit ändern.
Ziemlich unwahrscheinlich, weil ja jetzt schon beide Typen mit der Pointer-Size skalieren.

Generell habt ihr natürlich recht, dass man bei Möglichkeit doch bitte den korrekten Typ verwenden sollte. Das wollte ich mit meiner ersten Aussage auch auf gar keinen Fall in Frage stellen. Hier sollte HANDLE /THandle verwendet werden und daran gibt es nichts zu rütteln.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Alexander I

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

AW: Invalid_handle_value

  Alt 1. Feb 2017, 09:17
Danke.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 01:38 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