Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Einbinden einer API (https://www.delphipraxis.net/99299-einbinden-einer-api.html)

GoTo0815 10. Sep 2007 11:37


Einbinden einer API
 
Hallo,

bitte habt Nachsicht mit meinen folgenden Fragen. (Ich habe leider nichts im Forum gefunden, aber vielleicht auch die falschen Suchbegriffe eingegeben, auch habe ich noch nie eine fremde API benutzt )

Ich habe folgende 3 Dateien von einem Hersteller eines am USB Port angeschlossenen Gerätes erhalten:

api_dll.dll
api_lib.lib
api_wrapper.dll

Leider habe ich noch nie eine solche API in Delphi selber eingebunden.

Kann mir jemand helfen, wie ich das einbinde?
Kann mir jemand sagen worauf ich achten muss?
Kann es sein, dass ich die API nur mit C++ benutzen kann? Oder ist so etwas immer auch in Delphi einzubinden?

Ich benutze Delphi6!

Danke im Voraus.

Hendrik

DGL-luke 10. Sep 2007 11:43

Re: Einbinden einer API
 
Zitat:

Zitat von HendrikSturm
Oder ist so etwas immer auch in Delphi einzubinden?

Wenn es eine c-kompatible DLL ist, ja.
Der Hersteller sollte Typelibs (*.tlb) mitgeliefert haben, falls es sich um ActiveX handelt (dann müssen die DLLs aber auch *.ocx heißen :gruebel: ), das kann Delphi direkt importieren, oder c-header, die auf .h hören und sich im allgemeinen relativ problemlos nach delphi übersetzen lassen.

GoTo0815 10. Sep 2007 17:24

Re: Einbinden einer API
 
Hallo DGL-Luke,

Sorry, hatte ich übersehen. Im übergeordneten Verzeichnis war noch eine Datei Namens ChApi.h

Was muss ich damit machen?

Gruß

Hendrik

Die Muhkuh 10. Sep 2007 17:27

Re: Einbinden einer API
 
Nach Delphi übersetzen :zwinker:

sirius 10. Sep 2007 17:38

Re: Einbinden einer API
 
Zitat:

Zitat von Die Muhkuh
Nach Delphi übersetzen :zwinker:

Oder anders ausgedrückt (um mal zum Ziel zu leuchten :mrgreen:)

Du schaust dir an, welche Funktionen dort aufgelistet sind, und vor allem, welche Parameter sie wünschen. Dadurch weist du dann, was du aufrufen kannst. Und das kann dann so aussehen
Delphi-Quellcode:

// Diese Definition brauchst du aus dem Headerfile
type Tirgendeine_Funktion_aus_der_API:function(Irgendein_parameter1:Tirgendein_Typ,...):TIrgendein_Rückgabewert;

var lib:Thandle;
    Funktion:Tirgendeine_Funktion_aus_der_API;
begin
  lib:=loadlibrary('api_dll.dll');
  Funktion:=getprocaddress(lib,'Der entprs. Funktionsname aus dem Headerfile');
 
  //aufruf
  Funktion(4711);  

  freelibrary(lib);
Und wie du siehst, brauchst du da gewisse Infos über die Funktion bzw. die Funktionen und evtl. Parametertypen (die auch records sein können)
(Das da oben ist nur ein Beispiel und erhebt keinen Anspruch auf Vollständigkeit)

GoTo0815 10. Sep 2007 19:51

Re: Einbinden einer API
 
Hallo,

leider verstehe ich scheinbar nicht genug von alledem. Gibt es eventuell eine Möglichkeit, dass jemand mir die Übersetzungsarbeit abnimmt, mir dann einfach erklärt, wie ich die neuen Funktionen in Delphi nutzen könnte und mir dann noch ein wenig support leistet ? (gegen Bezahlung selbstverständlich)

Bitte mailt mich dann einfach an.

Gruß

Hendrik

oki 10. Sep 2007 20:06

Re: Einbinden einer API
 
Hallo Hendryk,

gegen Bezahlung findest du bestimmt jemanden :lol: , aber wenn das Headerfile nicht zu groß ist, dann kannst du es bestimmt auch selber schaffen.

Schau dir zu erst mal ein Tut über DLL's an. Da gibt es hier gute im Forum. Der Codeschnipsel von Sirius ist dann ein leichtes für dich. Und sequentielle Hilfe bekommst du hier von allen kostenfrei. Nur die Arbeit abnehmen wird dir keiner (kostenfrei :wink: ).

Ein gutes DLL-Tutorial findest du hier DLL-Tutorial von Assarbad

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz