Üdv !
Egy annyi érdekesség van, hogy egyik kollégám mondta, hogy ő C++ - t használva hibátlanúl működteti az inpout32.dll -t használó programját....
Lehet akkor a Lazarusnak van nehézsége nem is a librarynak? 1.2.0 Lazarust használok, mert 1.6-ra nem ment fel egy fontos komponensem (Cport) , vajon érdemes lehet megpróbálni 1.6.0.-val is? vagy nem sok esély van rá hogy műkd,üdik?
Egyébként nem próbáltam az IO.dll-t, de az a félelmem, hogy nem ennyire egyszerű, erre csakis az inpout32.dll használata közötti különbségek miatt következtetek:
Lazaarusban pl: form.create-nél is vannak teendők, így:
"
uses
....dynlibs...
type
TMyForm = class(TForm)
TInp32 = function(Address: SmallInt): SmallInt; stdcall;
TOut32 = procedure(Address: SmallInt; Data: SmallInt); stdcall;
.........
private
{ private declarations }
Inpout32: THandle;
Inp32: TInp32;
Out32: TOut32;
.........
implementation
.........
procedure TMyForm.FormCreate(Sender: TObject);
begin
{$IFDEF WIN32}
Inpout32 := LoadLibrary('inpout32.dll');
if (Inpout32 <> 0) then
begin
// needs overtyping, plain Delphi's @Inp32 = GetProc... leads to compile errors
Inp32 := TInp32(GetProcAddress(Inpout32, 'Inp32'));
if (@Inp32 = nil) then Caption := 'Error';
Out32 := TOut32(GetProcAddress(Inpout32, 'Out32'));
if (@Out32 = nil) then Caption := 'Error';
end
else Caption := 'Error';
{$ENDIF}
end.
"
amíg Delphi esetén valóban lényegesen egyszerűbb az inicializálás, csak a függvényt kell megadni:
"
function Inp32(wAddr:word):byte; stdcall; external 'inpout32.dll';
"
Ezért félek, hogy nem fogom tudni megcsinálni.... vagy talán a {$MODE DELPHI} direktíva valóban megoldja minden gondomat?