Thema: Delphi Problem mit Variant

Einzelnen Beitrag anzeigen

ede57

Registriert seit: 5. Apr 2008
Ort: Hamburg
46 Beiträge
 
Delphi XE Professional
 
#3

Re: Problem mit Variant

  Alt 4. Nov 2008, 19:10
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
  Mit Zitat antworten Zitat