Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Type von IDispatch (https://www.delphipraxis.net/168234-type-von-idispatch.html)

Tonic1024 10. Mai 2012 13:42

Delphi-Version: 2009

Type von IDispatch
 
Hallo zusammen...

Ich hab mir einen Schnipsel Code nach Delphi übersetzt. Es geht um Microsoft MapPoint, falls das zukünftigen Suchenden bei der Forensuche hilft.

Im original Codeschnipsel (hab ihn leider schon verworfen, gelöscht und find ihn im netz nicht wieder) wird geprüft ob sich ein Location-Typ oder ein PushPin-Typ hinter dem IDispatch verbirgt und nur das dann auch gecasted. So wie man es normal halt auch machen würde. Das MSDN hat mir verraten, dass an der Stelle nichts Anderes vorkommen kann. Nehme ich jetzt mal ungeprüft so hin.

Meine vorläufige Lösung funktioniert zwar, ist aber irgendwie ziemlich häßlich.

Delphi-Quellcode:
   
var Loc: Location;
    Pin: PushPin;
[..]
  try
    Loc:=(GottenDispatch as Location);
  except
    Pin:=(GottenDispatch as PushPin);
  end;
Das muss doch eleganter gehen, oder? Nur so für die Code-Performance und meinen Seelenfrieden.

Gruß,

Toni

himitsu 10. Mai 2012 14:00

AW: Type von IDispatch
 
Delphi-Referenz durchsuchenSupports?

PS: Das wird vom AS intern auch verwendet.
Und wenn man direkt hingeht, dann kommt man auch ohne die Exception des AS aus.

(IS=Prüfen und AS=UmwndelnOderErschießen)

shmia 10. Mai 2012 14:02

AW: Type von IDispatch
 
Delphi-Quellcode:
if Supports(GottenDispatch, Location, Loc) then
  // mach was mit Loc
else if Supports(GottenDispatch, PushPin, Pin) then
  // mach was mit Pin
else
  ; // und nu?

Tonic1024 10. Mai 2012 14:21

AW: Type von IDispatch
 
Gleich so viel schöner der Code. :-D


Vielen Dank euch Beiden.


Toni


Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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