Hallo Zusammen...
Folgene Routinen liefert leider immer einen Fehler
"EVariantBadVarTypeError"
Wer hat eine Idee?
Delphi-Quellcode:
procedure TMainform.SpeedButton14Click(Sender: TObject);
var
ValOut : OLEVariant;
Val : PSafeArray;
sBuffer: WideString;
T : TVarType;
i,
iMin,
iMax: integer;
begin
Combobox1.Items.Clear;
TVariantArg(ValOUT).VT := VT_BYREF
or VT_ARRAY;
TVariantArg(ValOUT).ppArray :=
nil;
TargetCommando(2233,EmptyParam,ValOut);
// IDM_GETBLOCKFMTS
Val := PSafeArray(TVariantArg(ValOUT).ppArray);
// Die Anzahl der Elemente im Array bestimmen
ActiveX.SafeArrayGetLBound(Val, 1, iMin);
ActiveX.SafeArrayGetUBound(Val, 1, iMax);
// Die einzelnen Strings auslesen
for i := iMin
to iMax
do
begin
ActiveX.SafeArrayGetElement(Val, i, sBuffer);
Combobox1.Items.Add(SBuffer);
end;
// Vorsicht, Leak...
a->
ActiveX.SafeArrayDestroyData(Val);
// EVariantBadVarTypeError
b->
ActiveX.SafeArrayDestroy(Val);
// EVariantBadVarTypeError
end;
Sowohl Lösung a als auch b...
Danke im voraus
Frank
PS.: Die Anleitung zu diesem Kommando gibt es
hier (msdn)