私はDelphiでAPIを使用しようとしています。 A pointer to the six byte Mifare key
:ここpucMifareKey一方、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);
です。 私がこれまで試みてきたコード。
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;
私は取得していますエラーがResult:=SCardCL....
キー^によるポインタのラインでIncompatible types: 'Byte' and 'Char'
です。何か案は?
"^"文字でコード内にポインタを作成しないでください。これはすでにポインタであるものをDE参照するためのもので、識別子の右に表示されます。左側に表示されている場合は、TYPE名の前に入力する必要があります。この名前は、タイプまたは変数DECLARATIONに表示する必要があります。 –