GESCHAFFT !
Kurz gesagt : Die Definition der CT-
API nach Teletrust ist falsch (oder zumindest sehr unklar definiert).
Warum? Klaus hatte doch den Prototypen geliefert:
Ich korrigiere mal den Lapsus mit der Aufrufkonvention:
Code:
char (*__stdcall CT_DATA) (USHORT, UCHAR*, UCHAR*, USHORT, UCHAR*, USHORT*, CHAR*);
Jetzt deine Version:
function(Ctn:Word; Dad:PByte; SAD:PByte; Lc:Word; Cmd:Pointer; Lr:Pointer; Rsp:Pointer):ShortInt;StdCall;
... und jetzt meine etwas mehr delphianisierte Version:
TFNCData = function(ctn: Word; var dad: Byte; var sad: Byte; lenc: Word; command: ^Byte; var lenr: Word; response: ^Byte): Byte; stdcall;
Bei "dad" und "sad" scheint es sich ja nur um einen einzelnen 8bit-Wert zu handeln, während mit "response" und "command" jeweils ein
array gemeint ist. Ich nehme mal an jemand der hier in den letzten Jahren Delphi benutzt hat kann das noch verfeinern (bspw. einen passenderen Typen als ^Byte).
Man merkt gleich daß das aus deutschen Landen kommt ...
... man könnte ja mindestens mal die C-Prototypen in
den PDFs angeben oder am besten gleich einen normalen Header. Grausam sowas ...