Seite 1 von 1

Wrapper für DispHpr.DLL

Verfasst: Mo, 07. Nov 2011 5:47
von AUGE_OHR
hi,

wer mit Xbase++ activeX arbeitet hat evtl. Geschwindigkeits- Probleme.
eine Möglichkeit bietet da DispHpr.DLL aber man müsste dazu seinen Source Code umschreiben.

nur wäre es nicht das Problem wenn dadurch die OOP Syntax nicht "wegfallen" würde,
denn die "Rückgabe Werte" sind keine Objecte sondern "numerisch" ( Pointer )

ich frage mich wie man eine Class schreibet wo man "Pointer verwaltet",
"dynamisch" Objecte erzeugt (im o:Cargo könnte der Pointer stehen ) und
diese per OOP Syntax angesprochen werden können ?

Code: Alles auswählen

#IFDEF USEXPP
   oOutlook := CreateObject( "Outlook.Application" )
#ELSE
   @dh:dhCreateObject( L( "Outlook.Application" ), 0, @oOutlook )
#ENDIF
der @dh: Aufruf ist viel zu kompliziert ... ich hätte lieber eine Function oder Method

Code: Alles auswählen

FUNCTION My_CreateObject( ProgID )
LOCAL nOutlook := 0
LOCAL oOutlook
...
   @dh:dhCreateObject( L( ProgID ), 0, @nOutlook )

   oOutlook := My_Class():New()
   oOutlook:Cargo := nOutlook
   
RETURN oOutlook
angenommen das funktioniert dann kommt als nächstes

Code: Alles auswählen

   //
   // MAPI Schnittstelle
   //
#IFDEF USEXPP
   oNameSpace := oOutlook:GetNamespace( "MAPI" )
#ELSE
   @dh:dhGetValue( L( "%o" ), ;
           @oNameSpace      , ;
           oOutlook         , ;
           L( ".GetNamespace(%s)" ), "MAPI" ) 
#ENDIF
wie bekomme ich da nun die OOP Syntax "simuliert" ?

klar könnte ich dafür wieder eine Function/Method nehmen

Code: Alles auswählen

FUNCTION My_Method(cMethode,xParameter)
...
   Object := My_Class():New()
...
RETURN Object
aber das wäre ja dann keine OOP Syntax.

also müsste in My_Class() eine "universal" Methode her ...
die müsste dann einen Codeblock evaluieren ...

aber wie bekomme ich aus oOutlook:GetNamespace()
die Methode "GetNamespace()" so "umgewandelt"
das ich damit Parameter für einen Codeblock bekomme ?

ich habe mal irgendwo sowas verbaut

Code: Alles auswählen

#xcommand METHOD <!ClassName!>:<MethodName> => METHOD <MethodName> CLASS <ClassName>
könnte man mit "xcommand" vielleicht was zusammenbauen ?