Goedemorgen 
Ik heb een probleempje met het Dictionary object uit scrrun.dll
In VB gebruiken we dit ding, en dit werkt prima
Nu wil ik 'm dus gaan gebruiken in C/C++.
Appeltje eitje..dll importeren met:
Tsjakkaa..nu kan ik in C/C++ dus m'n dictionary gebruiken
Voor het toevoegen van key/value paren aan de dictionary is de volgende functie:
Om deze functie goed te gebruiken moet ik er parameters van het type _variant_t in stoppen ipv VARIANT.
Zo dus:
Als ik VARIANT gebruik compileert het en draait het, maar wordt er niets aan de dictionary toegevoegd.
Nou is _variant_t een encapsulatie (ofzo) van VARIANT met een aantal toegevoegde functies/operatoren..maar toch vaag dat in de declaratie van de functies dan VARIANT types gebruikt worden.
Nu het volgende probleem...
Er is een functie om een ARRAY met alle aanwezige keys op te vragen. In VB is het return type van deze functie netjes een variant array.
In C/C++ echter is het een beetje vaag/fout
In de automagisch gegenereede header 'scrrun.tlh' wordt de functie als volgt gedeclareerd:
Stomme parameter is een pointer naar een variant...
Hoe gaat hier in vredesnaam een ARRAY van variants uit komen
Heb al vanalles geprobeerd..
- pointer naar een variant: VARIANT d
- pointer naar array varriantjes: VARIANT d[5]
- pointer naar een pointer naar een variant
- pointer naar een pointer naar een array van variantjes
Dezelfde dingen natuurlijk ook geprobeerd voor het _variant_t type.
En niets werkt...nou ja..het compileert en draait..maar zonder gewenst resultaat
Is hier iemand die dit al een keer gefixt heeft?
Zit ik al fout bij het importeren van de dll, of moet ik een of andere brute constructie die parameter in schoppen?
Ik heb een probleempje met het Dictionary object uit scrrun.dll
In VB gebruiken we dit ding, en dit werkt prima
Nu wil ik 'm dus gaan gebruiken in C/C++.
Appeltje eitje..dll importeren met:
code:
1
| #import "scrrun.dll" no_implementation named_guids raw_interfaces_only rename_namespace("fso") |
Tsjakkaa..nu kan ik in C/C++ dus m'n dictionary gebruiken
Voor het toevoegen van key/value paren aan de dictionary is de volgende functie:
code:
1
| virtual HRESULT __stdcall Add ( VARIANT * Key, VARIANT * Item ) = 0; |
Om deze functie goed te gebruiken moet ik er parameters van het type _variant_t in stoppen ipv VARIANT.
Zo dus:
code:
1
| dict->Add( &_variant_t( "Blaat" ), &_variant_t( "schaap" ) ); |
Als ik VARIANT gebruik compileert het en draait het, maar wordt er niets aan de dictionary toegevoegd.
Nou is _variant_t een encapsulatie (ofzo) van VARIANT met een aantal toegevoegde functies/operatoren..maar toch vaag dat in de declaratie van de functies dan VARIANT types gebruikt worden.
Nu het volgende probleem...
Er is een functie om een ARRAY met alle aanwezige keys op te vragen. In VB is het return type van deze functie netjes een variant array.
In C/C++ echter is het een beetje vaag/fout
In de automagisch gegenereede header 'scrrun.tlh' wordt de functie als volgt gedeclareerd:
code:
1
| virtual HRESULT __stdcall Keys ( VARIANT * pKeysArray ) = 0; |
Stomme parameter is een pointer naar een variant...
Hoe gaat hier in vredesnaam een ARRAY van variants uit komen
Heb al vanalles geprobeerd..
- pointer naar een variant: VARIANT d
- pointer naar array varriantjes: VARIANT d[5]
- pointer naar een pointer naar een variant
- pointer naar een pointer naar een array van variantjes
Dezelfde dingen natuurlijk ook geprobeerd voor het _variant_t type.
En niets werkt...nou ja..het compileert en draait..maar zonder gewenst resultaat
Is hier iemand die dit al een keer gefixt heeft?
Zit ik al fout bij het importeren van de dll, of moet ik een of andere brute constructie die parameter in schoppen?