![]() |
Free Pascal Syntax
Hallo zusammen,
ich habe mit der LazActiveX Komponente eine .tlb importiert. Es wird z.B. folgender Code generiert
Delphi-Quellcode:
function GetBSplineInfo(pnOrder:array[0..1] of LongWord;pnNumPoles:array[0..1] of LongWord;pnNumKnots:array[0..1] of LongWord;out pbIsRational:ShortInt;pbIsPeriodic:TArrayShortInt01;pbIsClosed:TArrayShortInt01;out pbIsPlanar:ShortInt;pPlaneVector:TPoint02):HRESULT;stdcall;
das läßt sich aber nicht kompilieren Fehler: L:\Inventor\Inventor_1_0_TLB.pas(34766,41) Fatal: Syntax error, "OF" expected but "[" found Das Problem kann man zwar umgehen idem man
Delphi-Quellcode:
deklariert, und dann TpnOrder in der Funktion übergibt.
type
TpnOrder = array[0..1] of LongWord; Das unangenehme aber ist, daß in dieser Bib zahllose solcher (verschiedener) arrays verwendet werden die dann alle händisch ersetzt werden müssten. Meine Hoffnung ist aber, das LazActiveX syntaktisch korrekten Code generiert, und ich lediglich einen Compilerschalter richtig setzen muß. Lieg ich da richtig, und vor allem wo find ich den Haken? |
AW: Free Pascal Syntax
Die Syntax
Delphi-Quellcode:
wird bei Parametern in der Tat nicht unterstützt. Das wäre also dann ein Bug im tlb-Importer. Könntest du eventuell einen Bugreport auf
array[x..y] of Something
![]() Edit: Die TLB ist in beiden Fällen nötig, da das Problem ja nachgestellt werden muss. Gruß, Sven |
AW: Free Pascal Syntax
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Sven,
entschuldige, daß ich mich erst so spät melde. An einen bug-report trau ich mich nicht ran, die .tlb hab ich aber angehängt. Es gibt aber noch weitere Probleme. Wenn ich in der automatisch erzeugten Unit folgende Typen deklariere:
Code:
und im Quelltext entsprechend ersetze,läßt sich die .lpk compilieren und installieren.
Type
TPoint02 = array[0..2] of Double; TPoint01 = array[0..1] of Double; TArrayShortInt = array[0..1] of ShortInt; TpCells = array[0..15] of Double; TpnOrder = array[0..1] of LongWord; TpCells = array[0..8] of Double; PIUnknown = IUnknown; // *1) Sobald aber in Lazarus ein Objekt auf einem Formular plaziert wird, stürzt Lazarus komplett ab. Kann aber auch an *1) liegen, da habe ich besseren Wissens nur improvisiert. Ausserdem finde ich in der Bibliothek kein Objekt namens Application. In Delphi erhalte ich durch
Delphi-Quellcode:
die Verbindung zum OLE-Server.
InventorApp:= GetActiveOleObject('Inventor.Application') As Inventor_TLB.Application; // Inventor_TLB = PackageName
(* auch GetActiveOleObject('{xxxxxxxxxxxxxxx}') KlassenId mit ROT-Viewer geht nicht *) Gruß Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz