Witam.
Chciałbym zaimportować procedurę z parametrami do mojego programu. z DLL nie miałem wcześniej do czynienia i interesuje mnie statyczne załadowanie.
Mam następującą procedurę w .DLL
procedure UstawConfig(var sektor : PIniSektor, zmienna : PIniZmienna, wartosc : PIniWartosc); stdcall;
BEGIN
...
END;
Oto deklaracja typów (umieściłem w DLL pod uses) z uwagi że artykuł (poniżej) wstawia to w plik (?).
type
PIniSektor = ^IniSektor;
PIniZmienna = ^IniZmienna;
PIniWartosc = ^IniWartosc;
PIniDowolny = ^IniDowolny;
PIniWiersz = ^IniWiersz;
var
IniSektor,IniZmienna,IniWartosc,
IniDowolny,IniWiersz : PChar;
Gdy var wrzuciłem do type i tak nie działa.
Oto deklaracja w programie:
interface
uses ...
procedure UstawConfig(var sektor : PIniSektor, zmienna : PIniZmienna, wartosc : PIniWartosc); stdcall
external 'vision32.dll' name 'UstawConfig';
chciałbym ją wyeskportować. Przeczytałem artykuł o importowaniu .dll z 4programmers.net
(http://4programmers.net/Delphi/Artyku%C5%82y/Biblioteki_DLL). Niestety przykład z eksportem procedur z parametrem jest dla mnie przesadnie skomplikowany. Nie z uwagi na zawartość, przede wszystkim na sposób opisania. Od akapitu "Parametry funkcji" autor nakazuje stworzyć plik rekord.inc i nigdzie poniżej nie jest on ani deklarowany ani zapisywany. Jak "type" umieszcze w DLL poniżej uses to błąd, są tam wskaźniki. Ja umieściłem moje zamiast w pliku to właśnie w sekcji type, których program (w którym dll zdeklarowałem) nawet nie wykrywa.
Stąd błąd jaki mi się pojawia podczas kompilacji programu:
[Error] _formStart.pas(8): E2003 Undeclared identifier: 'PIniSektor'
[Error] _formStart.pas(8): E2003 Undeclared identifier: 'PIniZmienna'
[Error] _formStart.pas(8): E2029 ';', ')' or '=' expected but ',' found
[Error] _formStart.pas(8): E2003 Undeclared identifier: 'PIniWartosc'