Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 04:23

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: idl verwenden in delphi
BeitragVerfasst: Fr Mai 02, 2008 09:22 
Offline
DGL Member

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.

Marcel

_________________
Just do it!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 02, 2008 10:17 
Offline
DGL Member
Benutzeravatar

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:
  1. uses
  2.   OleServer,
  3.   ActiveX,
  4.   Outlook_TLB in '..\..\Imports\Outlook_TLB.pas';
  5.  
  6. var
  7.   Outlook: _Application;
  8.  
  9. begin
  10.   CoInitialize(nil);
  11.  
  12.   Outlook := CoOutlookApplication.Create;
  13.   try
  14.     if Outlook.Session <> nil then
  15.       Outlook.Session.Folders ...
  16.   finally
  17.     Outlook := nil;
  18.   end;
  19. 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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 02, 2008 10:46 
Offline
DGL Member

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?

_________________
Just do it!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 02, 2008 11:24 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 02, 2008 12:07 
Offline
DGL Member

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.

_________________
Just do it!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2008 19:22 
Offline
DGL Member
Benutzeravatar

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 networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 23 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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]