Sorry, aber ich fuerchte Du musst die Frage noch einmal stellen. Und zwar ausfuehrlicher, denn aus Deinem code geht nicht hervor was er machen soll und somit auch nicht, was schief laeuft. Ich gehe trotzdem mal darauf ein:
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
FBodyShape := Value; // nicht deklariert. Was ist das?
// Art der Bohrung
BohrungsType := FBodyShape.Type; // Auch nicht deklariert... und dann eine property namens 'type' Aua!
// Setze Durchmesser
Diameter := FBodyShape.Diameter.Value; // -"-
//Variantes Array erzeugen
FPosArray := VarArrayOf([FPosValues[ 0],FPosValues[ 1],FPosValues[ 2]]); //Da steht jetzt erst mal Muell drin oder?
TTA := vartype(FPosArray[0]); // zeigt 5 an als Double alles OK //warum sollte es 5 anzeigen?
TTA := vartype(FPosArray[1]); //Dann war die erste Zuweisung auf TTA umsonst, wenn Du das hier wieder ueberschreibst
TTA := vartype(FPosArray[2]); //-"-
// Abfrage
FBodyShape.GetOrigin(FPosArray); //Was macht die Anweisung?
//
TTA := vartype(FPosArray[0]); // zeigt 5 an als Double alles OK //s.o.
TTA := vartype(FPosArray[1]);
TTA := vartype(FPosArray[2]);
//
S := varTypeAsString(FPosArray[0]); // zeigt $00Af an = 175 //hab ich was nicht mitbekommen? wi sollen die 175 herkommen
// Positionen
// sollte 175 - 275 - 0 rauskommen
FXpos := FPosArray[0]; // keine Werte
FYpos := FPosArray[1];
FZpos := 0;
end;
die Funktion in der TLB ist folgend
Delphi-Quellcode:
HoleDisp = dispinterface
...
....
procedure GetOrigin(ioOrigin: {??PSafeArray}OleVariant); dispid 1611071508;
...
....
ioOrigion ist als SafeArrayVariant als Double definiert
Es werden nur unsinnige werte oder nur 0 werte zurückgegeben
Vielleicht hat ja jemand eine lösung[/quote]
Frage: wo werden denn die Deiner Meinung nach unsinnigen Werte zurueckgegeben?
Oder anders herum wo macht welche Funktion etwas, das sinnvolle WErte zurueckgeben koennte?
Ich kapiers einfach nicht.