
Publié le 14/03/2006 Dans Programmation Par zion
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.
































Précédent 

*tousse*
Se connecter
Inscription
Mot de passe perdu
Powered by 