Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi COM + (un)typisierte Zeiger (https://www.delphipraxis.net/107799-com-un-typisierte-zeiger.html)

Dezipaitor 2. Feb 2008 11:47


COM + (un)typisierte Zeiger
 
hi

ist es möglich mit COM-Objekte typisierte Zeiger zu verwenden? Wenn ja, wie geht das (auch mit type lib (TLB)) ? Geht das in der Steigerung auch mit untypisierten Zeigern (+ Größenangabe)?

Ist es überhaupt möglich WinAPI Handles (sind alle Prozessbezogen, können aber mit DuplicateHandle übertragen werden!) zu verwenden?

thx

Dezipaitor 3. Feb 2008 14:04

Re: COM + (un)typisierte Zeiger
 
24h sind um, daher

** ping **

marabu 3. Feb 2008 14:18

Re: COM + (un)typisierte Zeiger
 
Hallo,

auch nach mehrmaligem Lesen deines Beitrags bin ich nicht sicher, ob ich dich verstehe.

Typisierte Zeiger in COM-Objekten? Klar: PInteger, PChar, ...

TLB? Brauchst du nur für early binding ...

Untypisierte Zeiger mit Größenangabe? Was hast du da vor?

Freundliche Grüße

Dezipaitor 3. Feb 2008 14:49

Re: COM + (un)typisierte Zeiger
 
Naja ich dachte eigentlich, dass ich ein Ergebnis zurückgeliefert von eine C-Funktion, in ein COM-Objekt verwandeln könnte.

Als einfaches Beispiel liefert ConvertStringSidToSidW einen Zeiger auf eine TSID Struktur. Kann nun eine Methode in einem COM-Objekt, diese Datestruktur empfangen, um das COM-Objekt zu initialisieren?

marabu 3. Feb 2008 15:28

Re: COM + (un)typisierte Zeiger
 
Da ein COM-Object häufig in einer DLL erzeugt wird und diese DLL wiederum oft in C geschrieben wurde, kannst du also davon ausgehen, dass eine C-Library dir ein Interface zurückgeben kann. Ich denke, da müsste es entsprechende Kapitel zur ActiveX-Erstellung in deinem C-Handbuch geben.

Deine letzte Frage ist für mich schon wieder verwirrend, da ich mich mit deinem Spezialgebiet so gut wie nie beschäftige. Ich weiß gar nicht von welchem COM-Object du schreibst - es scheint ein bestimmtes zu sein.

Dezipaitor 3. Feb 2008 15:39

Re: COM + (un)typisierte Zeiger
 
Beispiel:

Ich will ein eigenes COM-Objekt erstellen. Das heißt z.B. TCOMSid .
Es verwaltet eine SID (Name, Autoritäten, usw).

Ich frage mich, ob es eine Methode in einem COM-Objekt gegeben kann, die wie folgt aussieht:

Delphi-Quellcode:
procedure InitSid(const Sid : PSid); safecall;
Diese Methode holt die benötigten Daten aus der SID und initialisiert Eigenschaften des COM-Objekts.

Die COM-Objekte verbleiben in der Sprache Delphi.

marabu 3. Feb 2008 16:03

Re: COM + (un)typisierte Zeiger
 
Wenn du das COM-Object mit D7 entwerfen würdest, dann würdest du es COMSid nennen, ihm vielleicht ein Interface ICOMSid verpassen un diesem eine Methode Init. Der Methode ordnest du einen Parameter zu, den Typ machst du vorher bekannt und wählst ihn dann im TLB-Editor als VAR-Parameter aus. Warum willst du das mit C machen?

Dezipaitor 3. Feb 2008 16:17

Re: COM + (un)typisierte Zeiger
 
Wie mache ich den Typ bekannt?

marabu 3. Feb 2008 16:59

Re: COM + (un)typisierte Zeiger
 
Natürlich weißt du, dass du einen Typ per type-declaration bekannt machst!

Ich habe mal im PSDK nachgesehen, was es mit PSID auf sich hat und jetzt ahne ich, was dein Problem ist: variable length structure - kann das sein? Solche Strukturen benötigen eine Größenangabe oder einen Delimiter. Mit SID solltest du dich aber besser auskennen als ich.

Dezipaitor 3. Feb 2008 17:19

Re: COM + (un)typisierte Zeiger
 
Zitat:

Zitat von marabu
Natürlich weißt du, dass du einen Typ per type-declaration bekannt machst!

Ich muss doch für COM diese Methode über IDL definieren. Im TLB Editor gibt es nur die Standardtypen.

Zitat:

Zitat von marabu
Ich habe mal im PSDK nachgesehen, was es mit PSID auf sich hat und jetzt ahne ich, was dein Problem ist: variable length structure - kann das sein? Solche Strukturen benötigen eine Größenangabe oder einen Delimiter. Mit SID solltest du dich aber besser auskennen als ich.

Die variable Länge ist ein kleineres Problem. Ich weiß nur nicht, wie ich mit früher Bindung solche Typen in TLB bekannt machen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 Uhr.
Seite 1 von 2  1 2      

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