Execute News

Des nouvelles fraîches de http://www.execute.frRSS « Avant | Après » | Delphi[×]

Personnage 3D sous Firemonkey

Publié le 13/02/2018 [Delphi] [Firemonkey]
C'est une démo que j'avais posté sur le site Embarcadero il y a quelques temps, je la recycle sur Github

CubeMan3D, animation FMX sans une seule ligne de code :)

Présentation de CrossVCL

Publié le 09/02/2018 [Delphi]
Je viens de publier une video sur CrossVCL

Envoyer un mail en HTML avec Delphi

Publié le 29/01/2018 [Delphi] [MAPI]
Il est relativement facile d'envoyer un mail avec Delphi, avec la suite Indy on peut composer son mail avec du HTML, des images incluses, des pièces jointes...et hop un coup de SMTP et le mail part...le seul petit soucis est qu'il faut configurer la connexion SMTP évidemment...de plus, si vous voulez conserver le mail dans la boîte d'envoi, il faut passer par une session IMAP.

De son côté MAPI - à ne pas confondre avec IMAP - permet d'envoyer un mail avec le logiciel mail de l'utilisateur quel qu’il soit (le logiciel...et l'utilisateur aussi d'ailleurs), sans avoir à rien configurer (par exemple via le composant JEDI TJvMail)...mais MAPI est une vieille technologie qui ne supporte par les mails HTML, surtout avec des images incluses.

Devant ce manque terrible j'ai trouvé une astuce qui semble bien fonctionner, il suffit de deux lignes de code si vous composez déjà votre mail avec Indy (dans mon produit l'utilisateur a le choix entre SMTP et MAPI)

// idMessage: TidMessage
begin
  // composer le message 
  // ...
  // l'ouvrir dans le logiciel de messagerie par défaut
  idMessage.ExtraHeadesr.Add('X-Unsent: 1');
  idMessage.SaveToFile('message.eml');
  ShellExecute(0, 'open', 'message.eml', nil, nil, SW_SHOW); 
end;

il reste juste à installer un plugin pour Thunderbird car il ne supporte toujours pas X-Unsent.

Un petit rien qui serait sympa

Publié le 26/01/2018 [Delphi] [Features]
Petite amélioration qui n'a l'air de rien mais qui me ferait gagner un temps précieux...pouvoir faire un clic droit sur la configuration (debug, release...) et avoir l'option "Afficher dans l'explorateur" pour arriver directement sur l’exécutable :)

https://quality.embarcadero.com/browse/RSP-19832

Décompression d'un flux GZIPé

Publié le 23/01/2018 [Delphi] [Compression]
Il est assez frustrant de tomber sur une erreur aussi peu explicite que "data error" quand on cherche à décompresser un flux avec TZDecompressionStream.

Ce que l'aide en ligne ne précise pas, c'est que le paramètre WindowBits permet de spécifier que le flux possède une entête GZIP. Cette entête est facile à identifier, elle commence par la séquence $1F $8B alors que TZCompressionStream produira une entête ZLIB $78 $9C par exemple.

La valeur de WindowBits doit être comprise entre 8 et 15 avec 15 pour le meilleur taux de compression, mais si vous ajouter 16 à cette valeur, ZLib gérera l'entête GZIP.

Moralité, pour décompresser un flux GZIP (commençant par $1F $8B) il faut créer le flux comme ceci GZ := TZDecompressionStream.Create(Source, 31);