Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String zu Funktion (https://www.delphipraxis.net/107586-string-zu-funktion.html)

Sämy 30. Jan 2008 13:23

Re: String zu Funktion
 
Hmmmm... So geht es.
Aber gibt es keine andere möglichkeit, bei der die funktion nicht published sein muss. ich will nämlich den zugriff auf die funktion direkt über die konkrete klasse verbieten. nur ein zugriff über das interface soll erlaubt sein...

Bernhard Geyer 30. Jan 2008 13:48

Re: String zu Funktion
 
Zitat:

Zitat von Sämy
nur ein zugriff über das interface soll erlaubt sein...

hab ich doch schon angemerkt: IDispatch und über die beiden Methoden GetIDsOfNames und Invoke wäre sowas möglich. Diese Methoden verwendet auch Delphi bei Verwendung von (Ole)Variant und später bindung. VBS würde es ohne dieses Interface gar nicht geben.

Aber die Materie ist nicht gerade sehr einfach ....

Obige beiden Namen und DISPPARAMS sollten dir einige Beispiele liefern wenn du danach googelst.
Im Entwickler-Forum findest du bei DISPPARAMS auch 2-3 Beispiele.

Dezipaitor 21. Feb 2008 19:37

Re: String zu Funktion
 
Ich hab dasselbe Problem:
EqualSid erfordert eine intern Klasse, in COM ist es jedoch ein Interface.

Die untere Variante funktioniert zwar. Aber ich denke nur mit der InProc Variante.
Was mache ich aber bei OutProc oder bei Interface Zeigern in verschiedenen Apartments?


Delphi-Quellcode:
ISid = interface
...
  hidden function GetInternalSid : PChar; safecall;
...
end;

TISidImp = class(...,ISid)
private
  fInternalSid : TJwSid;
...
public
   function TISidImp.EqualSid(const Sid : ISid) : Boolean; safecall;
   function TISidImp.GetInternalSid : PChar; safecall;

function TISidImp.EqualSid(const Sid : ISid) : Boolean
begin
  result := fInternalSid.EqualSid(Sid ???);
end;

//Einführung diser Funktion...

function TISidImp.GetInternalSid : PChar;
begin
  result := fInternalSid;
end;

//...ermöglicht:

function TISidImp.EqualSid(const Sid : ISid) : Boolean
begin
  result := fInternalSid.EqualSid(TJwSid(Sid.GetInternalSid));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:37 Uhr.
Seite 2 von 2     12   

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