Also ncoh mal die Frage Stellung
Probleme mit Korrekten Rückgabe werten eines Varianten Arrays
Delphi-Quellcode:
// Bohrungs Shape
// Setze Shape
procedure THoleShape.Set_BodyShape(Value:Variant);
Var
FPosArray : OleVariant;
FPosValues :
Array[0..2]
of Double;
i : Integer;
tta : tVarType;
S :
string;
begin
// Lokale Variant Variable im Object THoleShape
FBodyShape := Value;
// Art der Bohrung
BohrungsType := FBodyShape.
Type;
// Type ist in Interface so definiert
// Setze Durchmesser
Diameter := FBodyShape.Diameter.Value;
// Durchmesser der Bohrung im Unterobejct Diameter ist OK
// wird auch Korrekt ausgelesen
//Variantes Array erzeugen
FPosArray := VarArrayOf([FPosValues[ 0],FPosValues[ 1],FPosValues[ 2]]);
// zeigt 5 an als Double alles OK weil Typen vom Array = varDouble - TTA ist nur zum Test
TTA := vartype(FPosArray[0]);
TTA := vartype(FPosArray[1]);
TTA := vartype(FPosArray[2]);
// Abfrage - übergabe vom Array an
// procedure GetOrigin(ioOrigin: {??PSafeArray}OleVariant); dispid 1611071508; im Ole Server
// ioOrigion ist laut Hilfe als SafeArrayVariant mit 3 Doublewerten definiert
// Übergabe des Arrays und das Array sollte mit werten gefüllt werden
FBodyShape.GetOrigin(FPosArray);
// noch mal Array prüfen
TTA := vartype(FPosArray[0]);
//TTA zeigt 5 an als varDouble alles OK
TTA := vartype(FPosArray[1]);
TTA := vartype(FPosArray[2]);
// S = Sollte eigentlich Double anzeigen - nur test
S := varTypeAsString(FPosArray[0]);
// zeigt $00Af an = 175
// Die 3 korrekten Bohrungs-Positionen der Bohrung sollten jetzt im Array sein
// sollte 175 - 275 - 0 rauskommen aber alle werte sind 0
FXpos := FPosArray[0];
// keine Werte
FYpos := FPosArray[1];
FZpos := 0;
end;
Das problem liegt nur in Rückgabe von den Korrekten werten im Varianten ARRAY
Alle anderen werte können vom Automatisierung-Server (Catia V5) ausgelesen werden