Autor Beitrag
UweD
Hält's aus hier
Beiträge: 2



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


ausblenden 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
Hält's aus hier
Beiträge: 2

Win 2000
Delphi 6 Enterprise
BeitragVerfasst: Mo 26.06.06 13:44 
Hallo Uwe,

ProfileArray ist eine in/out Variable die du in deiner function direkt ansprechen kannst über ProfileArray[i].
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: 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

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Roland111
Hält's aus hier
Beiträge: 1



BeitragVerfasst: 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
ausblenden 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
ausblenden Delphi-Quelltext
1:
ProfArray := VarArrayCreate ([02],  varVariant);					

und habe dem ersten Element zugeordnet:
ausblenden Delphi-Quelltext
1:
objEPProfArray [0] := objProfile;					


objProfile ist definiert als:
ausblenden 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