Registriert: Mo Okt 15, 2007 18:30 Beiträge: 74 Wohnort: Berlin
Hallo,
ich möchte eine Verbindung zu einem anderen Programm herstellen. Das Programm liefert dazu ein idl-file (interface description language). Das ganze nennt sich dann glaube ich COM API. Leider bin ich was das betrifft ziemlich unbedarft und weiß nicht genau wo ich anfangen soll. Muss ich das erst in ein tlb-file konvertieren? Und wie geht das? Was muss ich in Delphi machen. Bin für jede Beschreibung dankbar.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Gleich mal eines vorweg. Das ich damit intensiv gearbeitet habe ist über 7 Jahre her also bitte nicht schlagen, falls ich mich irgendwie vertue.
Du kannst in Delphi die Typbibliotheken (*.tlb) registrieren und importieren. Dazu gehst du auf "Projekt" -> "Typbibliotheken importieren...". Dann auf "Hinzufügen...". Die TLB auswählen damit sie installiert wird. Anschließen sollte die sich in der Liste befinden. Evtl wurde sie auch schon gleich markiert. Das weiß ich nicht mehr. Wenn du dann "Unit anlegen" drückst erstellt dir Delphi eine Pascaldatei die alle benötigten Typen und Interfaces enthält.
Diese Pascaldatei kannst du dann verwenden um die Schnittstellen via COM anzusteuern. Hier auch nen Beispiel wie ich die TLB von Outlook verwende. So ähnlich sollte das bei dir auch sein. Der Code ist auf das Wesentliche gekürzt.
Code:
uses
OleServer,
ActiveX,
Outlook_TLB in'..\..\Imports\Outlook_TLB.pas';
var
Outlook: _Application;
begin
CoInitialize(nil);
Outlook := CoOutlookApplication.Create;
try
if Outlook.Session <> nilthen
Outlook.Session.Folders...
finally
Outlook :=nil;
end;
end.
Ich glaube ohne solch eine CoClass kann man die auch mit der Methode CoCreateInstance erstellen. Aber da bin ich mir absolut nicht sicher!!
Du kannst diese TLB Dateien auch in Delphi erstellen/bearbeiten und speichern. Beim Speichern erstellt Delphi auch automatisch eine Pascaldatei die die benötigten Typen definiert. Aber immer ne Sicherheitskopie von deinen originalen Dateien behalten. Speziell, wenn die nicht mit Delphi erstellt wurden. Nicht, dass die dein einziges Original zerschossen wird.
PS: Hab das Thema ins Allgemeine Forum verschoben.
Registriert: Mo Okt 15, 2007 18:30 Beiträge: 74 Wohnort: Berlin
Ah, ok. Aber bis jetzt habe ich noch keine tlb, sondern das Programm stellt nur eine idl. Wenn ich das bei meiner bisherigen Google-Recherche richtig verstanden habe, dann kann man aber aus einer idl ein tlb erzeugen. Weißt du wie das geht?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Oh. Dann habe ich da was falsch verstanden.
In dem TLB Editor gibt es einen Toolbarbutton zum Erstellen einer IDL Definition. Es gibt auch einen Tabreiter "Text" bei dem man Text eintragen kann (nach dem man "Nur Lesen" unten) entfernt hat. ABER jeglicher versuch daran etwas zu ändern endete mit Fehlern. Selbst, dann wo ich wieder das Original hergestellt habe. Also so weiß ich nicht wie man das Konvertieren kann. Ich könnte mir vorstellen, dass da bei C++ ein entsprechendes Tool dabei ist. Aber keine Ahnung wenn ich ehrlich bin.
Registriert: Mo Okt 15, 2007 18:30 Beiträge: 74 Wohnort: Berlin
Ja, ich hatte auch schon probiert im Text-Tab der type library den idl-text reinzukopieren. Aber ich weiß auch nicht wirklich was ich da modifizieren soll damits läuft. Trotzdem danke erst mal. Vielleicht kennt sich ja noch jemand anders hier damit aus.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Es gibt ein Tool von Microsoft namens MIDL, wie ich gerade durch Google erfahren habe. Das wird wohl beim Microsoft Platform SDK oder Microsoft Visual Studio mitgeliefert. Ich weiss nicht, gibts das Platform SDK kostenlos?
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.