Einzelnen Beitrag anzeigen

alf.stefan

Registriert seit: 11. Apr 2003
88 Beiträge
 
Delphi 7 Professional
 
#1

DLL einbinden, in Klasse oder global

  Alt 11. Nov 2009, 14:11
Hallo zusammen

ich habe eine DLL bekommen und ein beispiel code für delphi der auch gut funktioniert.
In der .pas datei wird die Funktionalität der DLL bereitgestellt.
in etwas so

delphi7!

Delphi-Quellcode:
unit SpsIo;

interface
uses Classes;

const
  spsDll = 'IPS7LNK.DLL';

function IPS7Open (IPAdr : PChar; Rack : LongWord; Slot : LongWord; RxTimeout : LongWord; TxTimeout : LongWord ; ConnectTimeout : LongWord) : LongInt; stdcall;


implementation

function IPS7Open; external spsDll name 'IPS7Open';

end.
wie gesagt so funktioniert es wunderbar

wenn ich diese funktionen in eine klasse einbinden will hab ich mir das in etwa so vorgestellt


Delphi-Quellcode:
unit SpsIo;

interface
uses Classes;

const
  spsDll = 'IPS7LNK.DLL';

type TspsIo = class
  Address : string;
  handle : longInt;
  constructor create(Addr : String);
private
  function IPS7Open (IPAdr : PChar; Rack : LongWord; Slot : LongWord; RxTimeout : LongWord; TxTimeout : LongWord ; ConnectTimeout : LongWord) : LongInt; stdcall;
end;
  

implementation

function TspsIo.IPS7Open; external spsDll name 'IPS7Open';


constructor TSpsIo.create(Addr: String);
begin
     handle := -1;
     handle := IPS7Open(pChar(Addr),0,2,0,0,0);
     Address := Addr;
end;

.end
so gekapselt gibt es bei genau dieser funktion eine Access Violation bei andren funktionen auch mal ein EPrivilege error.

wo ist da der Unterschied beim Aufrufen der Funktion IPS7Open. Meiner Meinug nach habe ich die Funktionen doch nur in der Klasse gekapselt! Oder bin ich da falsch gewickelt?

Wäre schön wenn da mal jemand ein Auge draufwerfen könnte.
Im vorraus schon mal vielen Dank

Gruß
Stefan
  Mit Zitat antworten Zitat