Entwickler-Ecke

Sonstiges (Delphi) - Fehler bei importierter Typbibliothek


UweD - Mi 14.09.05 15:23
Titel: Fehler bei importierter Typbibliothek
Hi,
ich habe mit Delphi 7 eine Typbibliothek importiert und dabei wurde folgende *TLB.pas-Datei erzeugt (Auszug):



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
// *********************************************************************//
// DispIntf: Models
// Flags: (4096) Dispatchable
// GUID: {49852F8C-A403-11CE-818E-0800363A1E02}
// *********************************************************************//
  Models = dispinterface
    ['{49852F8C-A403-11CE-818E-0800363A1E02}']

function AddFiniteExtrudedProtrusion(NumberOfProfiles: Integer;
                                         var ProfileArray: {??PSafeArray}OleVariant;
                                         ProfilePlaneSide: FeaturePropertyConstants;
                                         ExtrusionDistance: Double;
                                         KeyPointOrTangentFace: OleVariant;
                                         KeyPointFlags: OleVariant; FromSurfOrRefPlane: OleVariant;
                                         ToSurfOrRefPlane: OleVariant): Model; dispid 233;



Wie kann ich korrekt auf ProfileArray zugreifen? Ich habe es probiert mit einer Variablen vom Typ OleVariant, mit einem Variant-Array (über VarArrayCreate) und mit PSaFeArray aber bekomme ständig einen Typkonflikt. Vielleicht hat ja jemand einen Tipp?! Danke!

Gruß Uwe

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.


bruechix - Mo 26.06.06 13:44
Titel: Fehler bei importierter Typbibliothek
Hallo Uwe,

ProfileArray ist eine in/out Variable die du in deiner function direkt ansprechen kannst über ProfileArray[i].


MrSaint - Mo 26.06.06 14:18

Hallo!

Ich kann meinem Vorredner nicht zustimmen und verweise auf eine Dokumentation, die hoffentlich zu dem Programm, welches du steuern möchtest gehört. In ein OleVariant kann man so ziemlich alles speichern: Strings (bzw. PChars), integer, float, ... und auch komplexere Dinge. Kann also gut sein, dass dir diese funktion z.B. ein Objekt zurückliefert mit dessen Hilfe du Profile verwalten kannst und diese Variable nur schlecht benannt ist... Also besorg dir ne Dokumentation und schau da drin nach, da sollte das drinstehen, was dir das da zurückliefert. Dann kannst du es auch korrekt verwenden ;)


MrSaint


Roland111 - Fr 03.07.15 12:48

Hallo Uwe!

Deine Frage ist jetzt schon 10 Jahre alt, aber es kam keine brauchbare Antwort. Ich habe nun genau das gleiche Problem:
Der Aufruf AddFiniteExtrudedProtrusion aus der SolidEdgePart_TLB

Delphi-Quelltext
1:
2:
function AddFiniteExtrudedProtrusion(NumberOfProfiles: Integer; var ProfileArray: {??PSafeArray}OleVariant;
...

liefert beim ProfileArray einen Typkonflikt.

Ich have ProfileArray als OleVariant definiert und erzeugt mit

Delphi-Quelltext
1:
ProfArray := VarArrayCreate ([02],  varVariant);                    

und habe dem ersten Element zugeordnet:

Delphi-Quelltext
1:
objEPProfArray [0] := objProfile;                    


objProfile ist definiert als:

Delphi-Quelltext
1:
objProfile:       SolidEdgePart_TLB.Profile;                    

Hast Du das Problem lösen können!

Gruß Roland

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt