我想在Delphi下使用API。這裏是API文檔如何使用PUCHAR調用API?
OKERR ENTRY SCardCLMifareStdAuthent
(IN SCARDHANDLE ulHandleCard,IN ULONG ulMifareBlockNr,
IN UCHAR ucMifareAuthMode,IN UCHAR ucMifareAccessType,IN UCHAR ucMifareKeyNr,
IN PUCHAR pucMifareKey,IN ULONG ulMifareKeyLen);
鑑於pucMifareKey:A pointer to the six byte Mifare key
。 迄今我一直在嘗試的代碼;
function Auth():Integer;
type
TSCardCLMifareStdAuthent = function(SCARDHANDLE: cardinal; ulMifareBlockNr: ULONG;
ucMifareAuthMode, ucMifareAccessType, ucMifareKeyNr: byte; pucMifareKey: puchar;
ulMifareKeyLen: cardinal):LONG;
var
SCardCLMifareStdAuthent: TSCardCLMifareStdAuthent;
hDLL: Integer;
CardHandle: cardinal;
i: integer;
Key: array of UCHAR;
begin
Result:=1;
//CardHandle is defined here
SetLength(Key, 6);
for i := low(key) to high(key) do
Key[i] := $FF;
hDLL := LoadLibrary('scardsyn.dll');
@SCardCLMifareStdAuthent := GetProcAddress(hDLL, 'SCardCLMifareStdAuthent');
if @SCardCLMifareStdAuthent <> nil then
Result:=SCardCLMifareStdAuthent(CardHandle, $00, 96, 0, 0, ^Key, 6);
FreeLibrary(hDLL);
end;
我得到的錯誤是在Incompatible types: 'Byte' and 'Char'
由於Result:=SCardCL....
上調鍵指針線。有任何想法嗎?
您不會在帶有「^」字符的代碼中創建指針。這是DE引用已經是指針的東西,然後它出現在標識符的右邊。當它出現在左邊時,它需要在一個TYPE名稱之前,並且需要在一個類型或變量DECLARATION中出現,如何在一個可執行語句中。 – 2009-05-19 12:37:58