Ich habe mir das
SDK von OmniKey mal kurz angesehen...
Du hast die Wahl zwischen:
Delphi-Quellcode:
function SCardCLGetUID(ulHandleCard: SCARDHANDLE; pucUID: PByte; ulUIDBufLen: ULONG; out pulnByteUID: ULONG): TOKErr; stdcall;
function SCardCLGetUID(ulHandleCard: SCARDHANDLE; pucUID: PAnsiChar; ulUIDBufLen: ULONG; out pulnByteUID: ULONG): TOKErr; stdcall;
function SCardCLGetUID(ulHandleCard: SCARDHANDLE; out pucUID; ulUIDBufLen: ULONG; out pulnByteUID: ULONG): TOKErr; stdcall;
Je nachdem, wie du pucUID lesen/verwenden willst.
(OKERR/TOKErr = LongInt und ENTRY = stdcall)
'string' ist in Delphi 2009 ein
Unicode-String (zwei Byte pro Zeichen). Du solltest also eher 'AnsiString' verwenden anstatt 'string'.
Wenn du die letzte Variante verwendest (untypisierter Ausgabeparameter), dann sollte die Verwendung so aussehen
Delphi-Quellcode:
UIDLen := 12;
SetLength(UID, UIDLen);
OkErr := SCardCLGetUID(hCard, UID[1], UIDLen, UIDLen);
if OkErr = 0 then
begin
SetLength(UID, UIDLen);
//...
end;