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.