Eviter la fenetre erreur jpeg #41 integre a tpicture

Description

Voilà c'est mon deuxième "plagia" d'une source de Japee (désolé ... ;) )

Après la solution de Japee qui, grâce à une astuce, permettait d'éviter le message
d'erreur bien connue "Erreur JPEG #41", source que vous trouverez ici :
http://www.delphifr.com/codes/EVITER-FENETRE-ERREUR-JPEG-41-SI-CHARGEMENT-IMAGE_29433.aspx

J'avais trouvé une solution (que vous trouverez dans les commentaires de la source de Japee)
il y a deux mois et que je pensais être la bonne ...

Mais quand j'ai voulu réutiliser ce bout de code ... oh!! Surprise,
L'interception de l'erreur JPEG #41 ne se faisait plus.
Après un travail d'investigation, il en ressort que la méthode que je proposais ne
fonctionnait qu'avec la propriété Stretch de TImage à True ??????? (Voir la Démo DemoOld.dpr)

Comme je n'étais pas satisfait du résultat je me suis penché à nouveau sur le problème et il en résulte
"une nouvelle méthode d'interception" intégrée directement dans ma nouvelle unité crJPEG
(Crée à la base pour pouvoir charger les JPEG directement depuis les ressources) Voir ici :
http://www.delphifr.com/codes/CHARGEZ-VOS-JPEG-DEPUIS-VOS-RESSOURCES-FACILEMENT_40049.aspx
(Je fait ma petite Pub en passant ... lol)

La détection et l'interception fonctionnent maintenant à 100% aussi bien avec :
- TJPEGImage (LoadFromFile & LoadFromStream & LoadFromResourceName & LoadFromResourceID)
- Qu'avec TImage.Picture (LoadFromFile & LoadFromStream)

Exceptionnellement vous trouverez deux projets, je tenais absolument à ce que vous puissiez
constater par vous même le problème avec "TImage.Stretch"
- DemoOld.dpr : ancienne version avec problème "TImage.Stretch"
- Demo.dpr : 100% fonctionnel dans tous les cas

Source / Exemple :


{Le teste se résume à ça:
 Un simple Try Except pour intercepter l'erreur JPEG #41
 ce qui parait logique me direz-vous !!! 
 Mais qui ne fonctionnait pas}
  Try
    Image1.Picture.LoadFromFile('..\Images\Invalid.jpg');
  Except
    On E : Exception do
    ShowMessage(E.Message);
  End;

Conclusion :


Je l'ai testé Ok sous D4 et D9
La seul chose que j'ai remarqué c'est sous D9 les numéros d'erreurs changent :
Sous D4 Erreur #41 = sous D9 Erreur #42
Sous D4 Erreur #52 = sous D9 Erreur #53

Voilà si vous savez pourquoi ...
Et dites moi ce que vous obtenez et avec quelle version de Delphi ... Merci

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.