Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Eine API (DLL) laden - Nur wie? (https://www.delphipraxis.net/144463-eine-api-dll-laden-nur-wie.html)

TheMiller 8. Dez 2009 13:20


Eine API (DLL) laden - Nur wie?
 
Hallo,

ich habe hier eine API liegen, die recht gut Dokumentiert ist. Diese möchte ich nun in mein Projekt einbinden. Sowas habe ich noch nie gemacht, deshalb frage ich bestimmt ziemlich dämlich.

Nun gut. Die API hat einige Beispiele, jedoch nicht für Delphi.

Sie zeigen, wie man die API in C/C++, VB, JScript (JavaScript), C# .net läd. Die letzte Variante könnte mir - glaub ich - gefallen. Ich habe noch nie etwas mit (C#) .net gemacht. Aber ich weis, dass bei meinem Delphi i-was mit .Net dabei ist (Delphi 2007 RAD Studio Original!).

Es sind sogar zu jeder der o.g Sprachen Code-Beispiele dabei, wie man die API laden muss.

Meine Frage ist jetzt: Muss ich den Umweg über (c#) .net gehen, oder kann ich die API auch wie eine normale DLL in Delphi laden und so auf die Methoden etc. zugreifen?

Zitat:

The following examples show how to load the API in C, VisualBasic and JScript programs Other Programming languages should offer similar approaches to load the API.
Ich darf leider nicht nennen, um welche API es sich handelt.

Ich hoffe, ihr könnt mir trotzdem weiterhelfen.

Danke im Voraus

Bernhard Geyer 8. Dez 2009 13:27

Re: Eine API (DLL) laden - Nur wie?
 
Zitat:

Zitat von DJ-SPM
Die letzte Variante könnte mir - glaub ich - gefallen. Ich habe noch nie etwas mit (C#) .net gemacht. Aber ich weis, dass bei meinem Delphi i-was mit .Net dabei ist (Delphi 2007 RAD Studio Original!).

Gut so, ist doch eh gestorben.

Aber ich denke das es sich um eine COM/Automatisierungs-Schnitttstelle und dann sollte die Verwendung mit Typelib-Import und Co. gehen.

TheMiller 8. Dez 2009 13:29

Re: Eine API (DLL) laden - Nur wie?
 
Ja, es ist eine COM-Schnittstelle. Kann ich also mit Delphi programmieren, ja?

Aber deinen Kommentar unter dem Zitat habe ich nicht verstanden ;)

Bernhard Geyer 8. Dez 2009 13:30

Re: Eine API (DLL) laden - Nur wie?
 
Zitat:

Zitat von DJ-SPM
Ja, es ist eine COM-Schnittstelle. Kann ich also mit Delphi programmieren, ja?

Ja.
Zitat:

Zitat von DJ-SPM
Aber deinen Kommentar unter dem Zitat habe ich nicht verstanden ;)

Ich meine es ist gut für dich das du mit Delphi.NET noch nichts gemacht hast. Dieser Teil von Delphi ist eh schon gestorben und war praktisch vollständig unbrauchbar. Wenn schon Pacal und .NET dann Delphi.Prism.

TheMiller 8. Dez 2009 13:33

Re: Eine API (DLL) laden - Nur wie?
 
Super!

Kannst du mir kurz erklären, wie ich die API einbinden und benutzen kann, oder fällt das unter den Punkt "erfolgreich umgesetzte intuitive Bedienungsmöglichkeit" ;)

Bernhard Geyer 8. Dez 2009 13:39

Re: Eine API (DLL) laden - Nur wie?
 
Zitat:

Zitat von DJ-SPM
Super!

Kannst du mir kurz erklären, wie ich die API einbinden und benutzen kann, oder fällt das unter den Punkt "erfolgreich umgesetzte intuitive Bedienungsmöglichkeit" ;)

Über den Menüpunkt "Komponenten/Komponenten importieren...", "ActiveX-Steuerelement importieren", <geheimer Name> auswählen weiter durchgehen.

TheMiller 8. Dez 2009 13:52

Re: Eine API (DLL) laden - Nur wie?
 
Wow, das funktioniert ja wirklich einfach. Delphi hat mir jetzt ein Unit erstellt, welche ich mal in ein Testprojekt eingebunden habe. Es compiliert ohne Fehler.

War das alles, oder muss ich für den Gebrauch noch die DLL irgendwie einbinden? Oder reicht einfach die Weitergabe? Ich meine, Delphi hat mir ja die Unit erstellt. Wird die DLL nun für das einzelne Projekt überflüssig?

Vielen Dank soweit!

Bernhard Geyer 8. Dez 2009 13:57

Re: Eine API (DLL) laden - Nur wie?
 
Zitat:

Zitat von DJ-SPM
War das alles, oder muss ich für den Gebrauch noch die DLL irgendwie einbinden? Oder reicht einfach die Weitergabe? Ich meine, Delphi hat mir ja die Unit erstellt. Wird die DLL nun für das einzelne Projekt überflüssig?

Deine COM-Komponente (COM-Schnittstelle) muß halt auf dem Ziel-PC installiert sein. Ansonsten wird alles in die Exe kompiliert.

Luckie 8. Dez 2009 14:02

Re: Eine API (DLL) laden - Nur wie?
 
Nein, die DLL wird natürlich nicht überflüssig. In der von Delphi erstellten Unit sind nur die Schnittstellendefinitionen drin. Der eigentliche Code steckt natürlcih immer noch in der DLL. Wichtig ist auch, dass das COM-Objekt auf dem Zielrechner auch installiert und im System registriert ist.

TheMiller 8. Dez 2009 14:10

Re: Eine API (DLL) laden - Nur wie?
 
Achso.... langsam kommt etwas Licht ins Dunkle.

Du schriebst

Zitat:

Zitat von Luckie
Wichtig ist auch, dass das COM-Objekt auf dem Zielrechner auch installiert und im System registriert ist.

Was bedeutet, das Installieren und Registrieren? Reicht es, die DLL in spezielle Systemverzeichnisse zu kopieren, oder gibt es eine Windows-API-Funktion, die ich aufrufe um die DLL zu registrieren?

Luckie 8. Dez 2009 14:13

Re: Eine API (DLL) laden - Nur wie?
 
Das geht per Hand über Windows regsrv.exe oder so ähnlich. Oder mit Hilfe einer API Funktion. Guck mal hier: http://www.michael-puff.de/index.php...lphi/Tutorials bei den Demos müsste es dabei sein und im Tutorial steht es auch.

DeddyH 8. Dez 2009 14:14

Re: Eine API (DLL) laden - Nur wie?
 
regsvr32 IIRC

Nersgatt 8. Dez 2009 14:17

Re: Eine API (DLL) laden - Nur wie?
 
Ich glaube, der Dateiname regsvr und regsvr32 hatte sich mal geändert. In Win95 war es noch regsvr und in NT war es regsvr32. Oder so ähnlich. Ist aber schon ein paar Jahre her.

Wenn man einen Installer für sein Programm benutzt, gibt es meistens irgendwo eine Option, die dem Installer sagt, dass die Datei registriert werden muss.

TheMiller 8. Dez 2009 14:18

Re: Eine API (DLL) laden - Nur wie?
 
Vielen Dank euch allen.

Ich denke, ich habe erstmal genug Futter ;)

TheMiller 8. Dez 2009 14:58

Re: Eine API (DLL) laden - Nur wie?
 
Hm.. eins noch...

Ich hab jetzt ein neues Projekt gestartet und die Unit eingebunden, die mir Delphi erstellt hat. Muss ich jetzt in neue Projekte auf meinem PC noch ActiveX oder Com-Objekte einbinden, oder reicht die Nennung der Unit in der Uses-Klausel?

Ich bekomme nämlich beim Erstellen des Objekts eine AV "unbekannter Fehler"

hoika 8. Dez 2009 17:21

Re: Eine API (DLL) laden - Nur wie?
 
Hallo,

Zitat:

Ich bekomme nämlich beim Erstellen des Objekts eine AV "unbekannter Fehler"
Schön, das du so ne Menge Code zeigst .... ;)


Heiko

Bernhard Geyer 8. Dez 2009 17:27

Re: Eine API (DLL) laden - Nur wie?
 
Zitat:

Zitat von hoika
Hallo,

Zitat:

Ich bekomme nämlich beim Erstellen des Objekts eine AV "unbekannter Fehler"
Schön, das du so ne Menge Code zeigst .... ;)

Die Kompo ist ja geheim :-)

Zwei möglichkeiten bestehen:

1, Die Kompo ist nicht richtig installiert. Lässt sich mit Beispielcode für VBS überprüfen

2, Die Kompo ist nicht mit Delphi kompatible - Dumm gelaufen.

EWeiss 8. Dez 2009 20:13

Re: Eine API (DLL) laden - Nur wie?
 
Oder er muss VBScript registrieren denke die ActiveX erwartet das.
Bevor er fragt wie das geht ;) So!
regsvr32 c:\windows\system32\scrrun.dll"

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 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