Registriert seit: 16. Jan 2006
18 Beiträge
|
AW: Massives Problem mit MCardInitialize = ???
16. Mär 2011, 15:51
Oh Mann - wieder mal meine (p) Ansi-Schwäche
Jetzt gehts:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var X: Integer;
slReaders: TStringList;
ret: Cardinal;
Hex: String;
hSCard: SCARDCONTEXT;
ReaderNameStr: String;
ReaderNameAnsiAry: Array of AnsiChar;
hMCard: MCARDCONTEXT;
MCardDllVer: DWORD;
begin
Memo1.Clear;
slReaders:=TStringList.Create;
// Alle SmartCard-Lesegeräte erfassen
GetSmartCardReadersList(slReaders);
Memo1.Lines.Add('Erfasste SmartCard-Lesegeräte:');
Memo1.Lines.Add(slReaders.Text);
if slReaders.Count>0 then begin
// Ressourcenmanager einbinden
ret:=SCardEstablishContext(0, nil, nil, @hSCard); // SCARD_SCOPE_USER | SCARD_SCOPE_SYSTEM
Memo1.Lines.Add('Ressourcenmanager einbinden - ret: '+IntToStr(ret));
ConvertDecToHex(hSCard,Hex,8);
Memo1.Lines.Add('Ressourcenmanager einbinden - hSCard: '+IntToStr(hSCard)+' = '+Hex);
Memo1.Lines.Add('');
if ret=0 then begin
// MCard starten
ReaderNameStr:=slReaders.Strings[0]+#0;
SetLength(ReaderNameAnsiAry, Length(ReaderNameStr));
for X:=1 to Length(ReaderNameStr) do ReaderNameAnsiAry[X-1]:=AnsiChar(ReaderNameStr[X]);
ret:=MCardInitialize(hSCard, @ReaderNameAnsiAry[0], @hMCard, @MCardDllVer); // PReader
// Speicher freigeben
SetLength(ReaderNameAnsiAry, 0);
ConvertDecToHex(ret, Hex, 8);
Memo1.Lines.Add('MCard starten - ret: '+IntToStr(ret)+' = '+Hex+' = '+GetSorMCardReturnCode(ret));
Memo1.Lines.Add('MCard starten - hMCard: '+IntToStr(hMCard));
Memo1.Lines.Add('MCard starten - MCardDllVer: '+IntToStr(MCardDllVer));
Memo1.Lines.Add('');
if ret=0 then begin
// ...
// MCard beenden
ret:=MCardShutdown(hMCard);
ConvertDecToHex(ret, Hex, 8);
Memo1.Lines.Add('MCard beenden - ret: '+IntToStr(ret)+' = '+Hex+' = '+GetSorMCardReturnCode(ret));
Memo1.Lines.Add('');
end;
// Ressourcenmanager lösen
ret:=SCardReleaseContext(hSCard);
Memo1.Lines.Add('Ressourcenmanager lösen - ret: '+IntToStr(ret));
Memo1.Lines.Add('');
end;
end;
slReaders.Free;
end;
Matthias
|
|
Zitat
|