Eviter la fenetre erreur jpeg #41 integre a tpicture

Soyez le premier à donner votre avis sur cette source.

Vue 8 193 fois - Téléchargée 642 fois

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

Ajouter un commentaire Commentaires
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
Bonjour,

Bravo pour ce super code, je note 10.

Cela ne m'étonne pas que ce soit l'ami Cirec à l'origine de cette réponse, comme quoi.............

@+,

Cincap
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
44
@FreDelph : Merci pour ton soutient, ça fait toujours plaisir :)

Mais au delà de la note ce qui m'intéresse le plus c'est de comprendre, pourquoi, qu'est ce qui n'est pas bon dans le code, afin de pouvoir l'améliorer et par la même accroître mes connaissances
et en faire profiter toute la communauté.

@+
Cirec
Messages postés
31
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
13 novembre 2006

Pour ma part je ne pense pas à noter... Mais c'est vrai que c'est vraiment utile et que ça mérite mieux !
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
44
Alors ... une note de 5 oui je veux bien ...
mais il aurai été plus courageux et surtout plus constructif de dire pourquoi ?

qu'est ce qui ne vas pas ?
y a t'il une autre méthode ? plus simple ?
&
en plus le tout est intégré à TPicture donc TImage et sans installation !!!
(rien que cela n'est pas courant)
et pour finir dans une application, c'est quand même plus propre d'intercepter le message d'erreur
et de pouvoir réagir sans que l'utilisateur ne s'en aperçois que de proposer un soft qui n'est même pas capable d'intercepter toutes les erreurs et du coup d'éclanche une erreur qui détone de suite avec le reste de l'application.

le minimum serait de s'expliquer ... mais c'est peut être tout simplement une vengeance
@+
Cirec
Messages postés
31
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
13 novembre 2006

Désolé pour cette info donnée de mémoire sans vérification... Tu as raison, je viens de retester.
Afficher les 13 commentaires

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.