Publié le 14/03/2006 Dans Programmation
On code (suite)
Passons maintenant à la lecture des informations. Le GetID nous renvoie une interface que l'on peut ensuite interroger pour récupérer une chaîne de caractère. Pas question de faire le tour de tout ce qui existe, on doit connaître le nom de chaque variable. Pas très pratique, heureusement que la documentation vient à notre secours:Voici le code correspondant en Delphi avec une toute petite gestion d'erreur en cas de non présence de la carte. Malheureusement, il semble impossible avec cet ActiveX de détecter l'arrivée du carte dans le lecteur, peut être dans le futur?
- procedure TForm1.Button1Click(Sender: TObject);
- var
- lMap: IMapCollection;
- lCert: ICertifCheck;
- lPicture: Pointer;
- lStream: TMemoryStream;
- lPictureVar: OleVariant;
- lJPEG: TJPEGImage;
- begin
- FEID.GetID(lMap, lCert);
- if lMap = nil then
- ShowMessage('Impossible de lire la carte')
- else
- begin
- self.Memo1.Lines.Add('Nom: '+lMap.GetValue('Name'));
- self.Memo1.Lines.Add('Nationalité: '+lMap.GetValue('Nationality'));
- self.Memo1.Lines.Add('Date de naissance: '+lMap.GetValue('BirthDate'));
- end;
- end;
Vous ne rêvez pas, c'est aussi simple que cela. Pris dans le feu de l'action, voyons voir si on peut également récupérer la photo sans difficulté.
- FEID.GetPicture(lMap, lCert);
- lPictureVar := lMap.GetValue('Picture');
- lPicture := VarArrayLock(lPictureVar);
- lStream := TMemoryStream.Create;
- try
- lStream.Write(lPicture^, VarArrayHighBound(lPictureVar, 1) - VarArrayLowBound(lPictureVar, 1) + 1);
- VarArrayUnlock(lPictureVar);
- lStream.Position := 0;
- lJPEG := TJPEGImage.Create;
- try
- lJPEG.LoadFromStream(lStream);
- Image1.Picture.Assign(lJPEG);
- finally
- FreeAndNil(lJPEG);
- end;
- finally
- FreeAndNil(lStream);
- end;
Un rien plus long pour la récupération de l'image mais cela fonctionne, c'est le principal. Il faudra un petit peu bidouiller pour pouvoir récupérer les informations à partir de l'OleVariant, mais tout est dans le code.
il serait intéressant d'avoir un exemple un peu plus complexe, par exemple incluant une vérification de PinCode. C'est documenté, mais assez mal... Surtout via ActiveX. D'ailleurs l'exemple VB ne le reprend pas...
Cedric
Est-il possible d'exécuter ce programme SANS installer le ressource Kit ?
Car en VB je n'y arrive pas.
Merci
Pour la vérification du PinCode, si ma mémoire est bonne c'est fait au niveau logiciel quand on essaie d'accéder aux données (je pense que c'était même du java), mais c'est juste un lecteur de toute façon, pas question de modifier quoi que ce soit sur la carte.
Mais c'est pas faux sinon, la documentation est limitée, d'ou la vente d'un SDK avec une grosse documentation, il faut bien le justifier *tousse*
Auriez le DLL ou OCX pour que je l'installe ? merci