Zitat von
multi-man:
Zitat von
Wal:
Leider nicht wirklich ..
Ich habe mal die LibUSB.pas mit in mein Testprogramm aufgenommen, aber leider passiert dabei das selbe ...
Chris
Du hast mich falsch verstanden, du sollst den Header nicht einbinden. Sondern die Dateien vergleichen um die Variabeln-Typen herauszubekommen.
Meiner Meinung müßte das so gehen:
Delphi-Quellcode:
type
octopus_context =
packed record
usb_handle : pointer;
error_str : pchar;
end;
Poctopus_context = ^octopus_context;
function octopus_init(
var context: octopus_context): integer;
external '
octopus.dll';
function octopus_open(context: octopus_context): integer;
external '
octopus.dll';
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;
Mit octopus_init bekommst du den Pointer auf das USB_Handle mitgeteilt, den du bei jedem Zugriff auf das USB-Teil brauchst.
Deshalb am besten auch Global deklarieren.
Mit octopus_open übergibst du den Pointer der octopus.dll wieder.
Wenn ich keinen falschen Fehler mache müßte das so ungefähr gehen.
Ich weiß auch nicht genau ob man für den Pointer nicht erst Speicher reservieren muß.
Nur mein Delphi ist halt noch nicht so gut.
Wal