Einzelnen Beitrag anzeigen

hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#1

DLL mit LPSTR einbinden

  Alt 14. Nov 2011, 14:35
Hallo allerseits
nun steh ich seit Monaten an und auch der Hersteller der DLL kann mir nicht weiter helfen. Die ganze Suche in den verschiedenen Foren hat auch zu nichts geführt.
Es geht um die DELCOMDLL.DLL (www.delcomproducts.com), welche ich einbinden möchte. Als erstes muss man da eine Abfrage auf einen Device vornehmen.
Funktion: DelcomGetNthDevice( DWORD Type, DWORD Nth, LPSTR Name);
Rückgabe dieser Funktion ist ein DWORD mit 0 wenn ok. Das Problem ist beim LPSTR Name. Gemäss Beschreibung im Manual ist dies "The third parameter is a pointer to a string of characters of which
must be pre-allocated and must be at least 512 bytes long"

Ein 512-Zeichen langer String geht ja in Delphi bekanntlich nicht, also müsste doch irgend etwas mit einem char-array möglich sein, aber ich schaff es einfach nicht. die aktuelle Variante sieht wie folgt aus, das Programm läuft auch problemlos durch, nur eine Device-Nummer wird nie wirklich ausgelesen, resp. zwischengespeichert. Deshalb gibt's auch beim DelcomOpenDevice nie ein Handle zurück.

Code:
Function DelcomGetNthDevice(ProductType, NthDevice : DWORD; DeviceName : PChar): DWORD; stdcall; external 'DelcomDLL.dll';
Function DelcomOpenDevice(DeviceName : PChar; Mode : DWORD): Integer; stdcall; external 'DelcomDLL.dll';

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var DevName : array [0..511] of char;
var x       : integer;
begin
for x := 0 to 511 do DevName[x] := char(32);
  if DelcomGetNthDevice(2,0, DevName) = 0 then
     begin
     ShowMessage(DevName);
     bHandle := DelcomOpenDevice(DevName, 0);
     if bHandle = 0 then
        ShowMessage('Error');
     end;
end;
Ich vermute, dass ich mal wieder irgendwo was mit Pointern und so übersehen habe, aber wie gesagt, ich bin nicht erst seit einer Viertelstunde am üben. Wenn mir also jemand auf die Sprünge helfen könnte, wäre ich sehr dankbar.
Heinz Schneider
  Mit Zitat antworten Zitat