AGB  ·  Datenschutz  ·  Impressum  







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

Inkompatible Handle-Typen erstellen

Ein Thema von archimedix · begonnen am 3. Jan 2022 · letzter Beitrag vom 3. Jan 2022
Antwort Antwort
archimedix

Registriert seit: 17. Jul 2011
22 Beiträge
 
Delphi 10.4 Sydney
 
#1

Inkompatible Handle-Typen erstellen

  Alt 3. Jan 2022, 20:53
Delphi-Version: 10.4 Sydney
Hallo zusammen,

weiß jemand, ob man Handle-Typen erstellen kann, die *nicht* zuweisungskompatibel sind?
Stichwort Typsicherheit.
Es soll also nicht möglich sein, ein Wert vom Typ 1 einer Variablen vom Typ 2 zuzuweisen.

Einfach so geht es schonmal nicht:
type
TSortHandle = THandle;
TContextHandle = THandle;

Und so leider auch nicht:
type
TSortHandle = type THandle;
TContextHandle = type THandle;

Mit Pointer, IntPtr und NativeInt das gleiche.
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Inkompatible Handle-Typen erstellen

  Alt 3. Jan 2022, 21:08
Delphi-Quellcode:
program Project1;

type
  TWindowHandle = record
    var handle: THandle;
    class operator Implicit(const handle: THandle): TWindowHandle;
  end;

  TProcessHandle = record
    var handle: THandle;
    class operator Implicit(const handle: THandle): TProcessHandle;
  end;

class operator TWindowHandle.Implicit(const handle: THandle): TWindowHandle;
begin
  Result.handle := handle;
end;

class operator TProcessHandle.Implicit(const handle: THandle): TProcessHandle;
begin
  Result.handle := handle;
end;

var
  rawHandle: THandle;
  windowHandle: TWindowHandle;
  processHandle: TProcessHandle;
begin
  rawHandle := 1234;
  windowHandle := rawHandle;
  processHandle := rawHandle;
  // windowHandle := processHandle; // E2010 Incompatible types
end.
  Mit Zitat antworten Zitat
archimedix

Registriert seit: 17. Jul 2011
22 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Inkompatible Handle-Typen erstellen

  Alt 3. Jan 2022, 23:40
ja, so ging es.
Elegant ist anders, aber immerhin.
  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 00:07 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