Thema: Delphi Problem mit Variant

Einzelnen Beitrag anzeigen

mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#2

Re: Problem mit Variant

  Alt 4. Nov 2008, 16:19
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.
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat