Autor Beitrag
Mavarik
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 19.04.06 10:29 
Hallo Zusammen...

Folgene Routinen liefert leider immer einen Fehler
"EVariantBadVarTypeError"

Wer hat eine Idee?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
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...

Die Exception kommt jedoch auch, wenn ich die Destroy's weglasse.

Danke im voraus

Frank

PS.: Die Anleitung zu diesem Kommando gibt es unter:
msdn.microsoft.com/l.../getblockformats.asp
Mavarik Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 20.04.06 13:11 
Hat sich erledigt!

Danke