Zitat von
Luckie:
Zitat von
multi-man:
Speicher reserviert ? Wohl eher nicht
Aber hier mal der Code :
Delphi-Quellcode:
function octopus_init(var context: octopus_context): integer; external 'octopus.dll';
function octopus_get_hwdesc(var context: octopus_context; desc: Pchar): Pchar; external 'octopus.dll';
function octopus_open(context: octopus_context): integer; external 'octopus.dll';
Bei dir fehlen überall die Aufrufkonventionen.
Danke, das ist mittlerweile behoben !
Zitat von
omata:
Versuch es mal so...
Delphi-Quellcode:
type
octopus_context = packed record
usb_handle : integer;
error_str : pchar;
end;
Poctopus_context = ^octopus_context;
function octopus_init(context: Poctopus_context): integer; stdcall; external 'octopus.dll';
function octopus_open(context: Poctopus_context): integer; stdcall; external 'octopus.dll';
Aufruf...
Delphi-Quellcode:
var context:Poctopus_context;
begin
new(context);
try
if octopus_init(context) = 0
then
raise Exception.Create(context.error_str);
if octopus_open(context) < 0
then
raise Exception.Create(context.error_str);
finally
dispose(context);
end;
end;
Das Init läuft durch, beim Open erhalte ich die folgende Meldung: "could not found octopus device with pid and vid". Diese Meldung ist ja schonmal vielversprechend, ich habe ja auch kein Gerät. Aber es kommt eben auch keine
Access Violation mehr.
Danke für den guten Ansatz, Init läuft durch mit 1 und open läuft auch durch ohne
exception und mit returnwert 1, allerdings bekomme ich jetzt im error_str die Meldung "can't set configuration for given usb device" .
Das ist jetzt wohl wahrscheinlich nicht mehr delphi-spezifisch ... Habe allerdings gerade nochmal in Python an dem selben Rechner das Teil probiert, und da funktioniert es wunderbar ...
Aber der Aufruf scheint ja eigentlich zu stimmen, sonst würde ja nicht 1 und der error_str zurückkommen ...
Vielleicht stimmt an der
dll was nicht ..
Ich werd mal weiter forschen ...
Falls noch jemand ne Idee hat, lasst es mich wissen