2010-09-23 4 views
1

J'ai ce morceau de code qui fonctionne avec toutes les images dans le monde (j'ai essayé des milliers - pour de vrai) sauf un JPG. Lorsque j'essaie de charger cette image (elle s'ouvre dans IrfanView sans problèmes), j'obtiens une violation d'accès.Ce code échoue: aBitmap.Assign (aGraphic.Graphic). Comment le réparer?

aBitmap.Assign (aGraphic.Graphic)

Toutes les idées?


utilisant: Delphi 7, Win 7 32bit

+0

Cocher cette http://stackoverflow.com/questions/3520186/delphi-jpeg-error-53/3520521#3520521 il vous aidera. – Bharat

+0

Salut Bharat - J'ai le code pour gérer cette erreur (qui se passe sur 'loadfromfile'). Mais ce n'est pas mon cas. Je ne parle pas de l'erreur 53 mais de l'AV. Aussi mon erreur arrive sur Assign. – Ampere

+0

Il pourrait être utile si vous téléchargez un exemple d'image problématique et peut-être un plus gros code du code réel. – Trinidad

Répondre

0

Il est mon code défectueux.

Je viens d'ouvrir l'image dans PaintShop Pro 7 et de la sauvegarder (également en JPG). Non cela fonctionne. Cela peut être un problème dans le code de Borland. Peut-être qu'il ne gère pas bien les images qui ne suivent pas la norme JPG? Quoi qu'il en soit, le problème est qu'il ne plante pas sur LoadFromFile. J'ai déjà sécurisé ce morceau de code avec TRY EXCEPT. Il se bloque sur Assign.

Mise à jour: On dirait qu'il a été le bug CMJN: http://cc.embarcadero.com/item/19723

+1

Le code de Borland est un code C officiel du groupe JPEG indépendant. Vous avez peut-être rencontré un problème aléatoire, qui est résolu depuis sa sortie avec Delphi 7. Vous pouvez utiliser d'autres codes pour charger et enregistrer des fichiers jpeg, par exemple notre unité SynGdiPlus open source qui peut être utilisée en remplacement du jpeg standard unité: il vous permet de lire et d'enregistrer des images jpeg en utilisant GDI +, livré depuis Windows XP. Voir http://blog.synopse.info/tag/GDIPlus –

Questions connexes