TurboCAD mittels DLL ansteuern

Antworten
hotzenplotz
Beiträge: 33
Registriert: So 13. Dez 2009, 16:17

TurboCAD mittels DLL ansteuern

Beitrag von hotzenplotz »

Hallo,
dies ist mein erster Post! Mit Pascal oder Delphi hab ich keinerlei Erfahrung. Ich komme aus dem C++ Lager.
Ich hab da mal eine für mich sehr wichige Frage, die unter anderem entscheidet ob ich FP und Lazarus für zukünftige Projekte einsetzen werde.
Mit meinem nächsten Projekt möchte ich TurboCAD mittels COM Schnittstelle fernsteuern. Mit VC++ würde ich das so machen:

Code: Alles auswählen

#import "C:\\Program Files\\IMSIDesign\\TCWP16\\Program\IMSIGX16.DLL"
HRESULT hr;
IMSIGX::IApplicationPtr spIApp;
hr = spIApp.CreateInstance("TurboCAD.Application", NULL, CLSCTX_LOCAL_SERVER);
spIApp->Visible = VARIANT_TRUE;


Der Aufruf wäre mit VC# noch simpler:

Code: Alles auswählen

IMSIGX.Application TCApp;
TCApp = new IMSIGX.Application();
TCApp.Visible = true;


Wie würde man so etwas mit FP/Lazarus realisieren?

Vielen Dank für eure Hilfe!
Grüße
...
Mischen Sie Sich ein! Machen Sie mit! ödp www.ödp.de - Die Öko-Demokraten

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: TurboCAD mittels DLL ansteuern

Beitrag von monta »

Willkommen im Forum.

Eventuell hilft dir folgnedes weiter, auch wenn es mit Office ist, die Vorgehensweise sollte ja fast gleich sein:
http://wiki.lazarus.freepascal.org/Offi ... oft_Office

Ich hab es aber noch nie gemacht, kann also nichts dazu sagen, außer, das es natürlich nicht Plattformunabhängig ist.
Johannes

hotzenplotz
Beiträge: 33
Registriert: So 13. Dez 2009, 16:17

Re: TurboCAD mittels DLL ansteuern

Beitrag von hotzenplotz »

Sorry für die verspätete Antwort! Hatte viel zu tun. Danke für deinen Tip! Leider konnte ich bis jetzt nicht die Methode/Funktion CreateOleObject finden. Ich wollte eigentlich nur wissen, ob und wenn ja wie man ein COM Objekt per ID initialisiert. Ja... Die COM Programmierung. Bis jetzt hab ich mich immer erfolgreich davor gedrückt. Ich weiß bisher, das alle Interfaces von IDispatch abgeleitet sind. <- Ich werd mich hier nochmal genauer durch das MSDN wühlen.

Ich habe eigentlich nur die ID vom COM. Wie könnte ich mit der ID das Objekt erstellen und initialiesieren?
Ich hätte da schon eine TLB Datei in Delphi generiert (Trial). Die lässt sich aber nicht so ohne weiteres einbinden.
Mischen Sie Sich ein! Machen Sie mit! ödp www.ödp.de - Die Öko-Demokraten

hotzenplotz
Beiträge: 33
Registriert: So 13. Dez 2009, 16:17

Re: TurboCAD mittels DLL ansteuern

Beitrag von hotzenplotz »

Hab's geschaft per late binding auf's Objekt zuzugreifen. Early binding funktioniert bis dato noch nicht. Die Delphi TLB zickt extrem rum. Das komische ist, dass Delphi (auch neuere Versionen) genau so wie C++ Builder 6 Pro weitgehend die selben Probleme haben die COM Dll automatisch korrekt umzuwandeln. Ich hoffe ein mögliches Tool für Lazarus wird besser designed. Wie z.B. http://www.dsource.org/projects/juno/wi ... ryImporter
Mischen Sie Sich ein! Machen Sie mit! ödp www.ödp.de - Die Öko-Demokraten

hotzenplotz
Beiträge: 33
Registriert: So 13. Dez 2009, 16:17

Re: TurboCAD mittels DLL ansteuern

Beitrag von hotzenplotz »

Early binding funktioniert jetzt auch! Fazit: Es ist durchaus möglich mit Lazarus und dem 2.4 er FPC auf COM Schnittstellen zuzugreifen. Geile Sache!
Mischen Sie Sich ein! Machen Sie mit! ödp www.ödp.de - Die Öko-Demokraten

Dicki
Beiträge: 1
Registriert: Di 22. Jun 2010, 23:16
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 32Bit

Re: TurboCAD mittels DLL ansteuern

Beitrag von Dicki »

Kann mann den Code (auch Auszüge) bekommen. Welche TurboCad-Version wurde verwendet?

Antworten