/Update:
Ich habe nun gemäß deines Vorschlags folgende Struktur verwendet. Das ist wohl die Best-Practise, die man mit Delphi hinbekommen kann:
Die Alternative mit *.inc ist nicht so gut, da man dann auf das syntaxhighlighting verzichten müsste.
Code:
Gemeinsame Typdeklarationen - myapi_h.pas:
interface
type declarations...
implementation
nichts
API Entwicklung - myapi_impl.pas:
interface
uses myapi_h.pas;
Funktionen vollständig deklarieren (REDUNDANT*)
implementation
Funktionen implementieren
API Entwicklung - myapi.dpr (
dll):
uses myapi_impl.pas
exports funktionsnamen;
begin
end.
API Benutzung - myapi.pas:
interface
uses myapi_h.pas;
Funktionen vollständig deklarieren (REDUNDANT*)
Zusätzlich: {$EXTERNALSYM} für alle funktionen
implementation
Funktionen importieren aus
DLL
API Benutzung - myprogram.dpr (exe):
uses myapi.pas
begin
// Nutzen der Funktionen
end.
* = Schade ist, dass die kompletten Funktionsdeklarationen nun in myapi.pas und myapi_impl.pas immer noch redundant sind. In C könnte ich die Funktions-Köpfe einfach in die *.h schreiben und sie später in *.c entweder implementieren oder per Library-Verweis nutzen. Kann man da noch was rausholen?
Gruß
Daniel