Hallo,
in einer Typbibliothek ist folgende Funktion definiert:
Delphi-Quellcode:
// *********************************************************************//
// DispIntf: ModelState
// Flags: (4096) Dispatchable
// GUID: {B0D75815-A121-4964-BE90-7B8C0422C2DD}
// *********************************************************************//
ModelState =
dispinterface
['
{B0D75815-A121-4964-BE90-7B8C0422C2DD}']
...
procedure GetReferenceKey(
var ReferenceKey:
{NOT_OLEAUTO(PSafeArray)}OleVariant;
KeyContext: Integer);
dispid 2130706454;
...
end;
Damit will ich die Funktion aufrufen:
Delphi-Quellcode:
...
var
test: OleVariant;
begin
...
MS.Item[i].Name // <- funktioniert
...
test:= VarArrayCreate([0,1000],varByte);
MS.Item[i].GetReferenceKey(test); // <- funktioniert NICHT
...
Der Aufruf der Prozedur scheitert. ich erhalte bei der Zeile "MS.Item[i].GetReferenceKey(test)" die Fehlermeldung Typenkonflikt.
bedeutet wohl daß
VarArrayCreate([0,1000],varByte)
falsch ist.
Aber wie muß das definiert werden?
Wie erzeuge ich hier ein PSafeArray ?
Was ist MS? So wie GetReferenceKey definiert ist würde ich erwarten, das diese Prozedur den array erzeugt und in dem test-OleVariant zurückgibt. Du übergibst auch keinen Wert für den KeyContext-Parameter. GetReferenceKey gibt auch keinen Result zurück, den Du einer Variablen zuweisen kannst.