AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL mit LPSTR einbinden

Ein Thema von hesch21 · begonnen am 14. Nov 2011 · letzter Beitrag vom 14. Nov 2011
 
hesch21

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

DLL mit LPSTR einbinden

  Alt 14. Nov 2011, 13: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz