IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

[1.8.2 Linux/Windows] Bugs de l'OpenPictureDialog EDIT : ou plutôt de l'unité Graphics


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut [1.8.2 Linux/Windows] Bugs de l'OpenPictureDialog EDIT : ou plutôt de l'unité Graphics
    Bonjour,

    au lancement d'un programme de test j'ai un bouton pour faire afficher un OpenPictureDialog pour lequel j'ai explicitement demandé la preview dans l'EDI (ofAutoPreview à True) et malgré ça, lors du 1er clic sur le bouton la BdD s'affiche sans le panneau de preview :
    Nom : 1re_ouverture_W.png
Affichages : 612
Taille : 23,3 Ko

    Je clique sur "Annuler", je reclique sur le bouton et là, par magie (tu vois bien, Gilles, ), le panneau est présent et fonctionnel :
    Nom : 2e_ouverture_W.png
Affichages : 593
Taille : 24,9 Ko

    Plus qu'à cliquer sur un fichier image :
    Nom : preview_balle.png
Affichages : 581
Taille : 26,9 Ko

    Ceci est le 1er bug car, vous l'aurez noté, j'ai bien écrit bugs dans le titre.

    Le second est plus vicieux : supposons que je parcoure une arborescence de dossiers et que dans l'un d'eux il y ait un fichier incompatible1 avec Lazarus ; à partir de là, la preview ne fonctionne plus, et l'annulation de la BdD génère parfois une insulte "Access Violation".
    Des fois je peux reprendre la main sur le prog, des fois non (freeze), des fois il se ferme carrément sans autre forme de procès.

    À une époque j'avais essayé de jeter un œil dans le code de l'OPD mais c'est un plat de spaghetti (pour moi).
    ---
    1 : je dis bien "incompatible avec Lazarus" car le fichier qui met la pagaille s'ouvre correctement avec les différents outils de Linux comme de XP.

    Bon week-end prolongé,

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Le second est plus vicieux : supposons que je parcoure une arborescence de dossiers et que dans l'un d'eux il y ait un fichier incompatible1 avec Lazarus ; à partir de là, la preview ne fonctionne plus, et l'annulation de la BdD génère parfois une insulte "Access Violation".
    Des fois je peux reprendre la main sur le prog, des fois non (freeze), des fois il se ferme carrément sans autre forme de procès.
    ---
    1 : je dis bien "incompatible avec Lazarus" car le fichier qui met la pagaille s'ouvre correctement avec les différents outils de Linux comme de XP.
    Bonjour,

    Je reviens 5 minutes là-dessus car je viens de découvrir un truc hallucinant !

    Le problème n'est pas dans le TOpenPictureDialog mais dans l'unité Graphics, sans doute.

    Comment je l'ai trouvé ? En reprenant un vieux projet développé avec la librairie Vampyre, qui utilise pour l'une de ses démos un bête TOpenPictureDialog, qui a fonctionné comme prévu : prévisualisation ok, ouverture de fichier RAS.

    N'en croyant pas mes yeux, j'ai créé à toute allure un nouveau projet avec juste un TButton, un TOpenPictureDialog, et 1 ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if opd.Execute then ShowMessage('ok');
    end;
    et ça a fonctionné tip-top !
    J'ai commenté Graphics dans uses, ça ne l'a pas perturbé, j'ai repris le projet Vampyre, ai fait une recherche sur le mot Graphics dans tous les fichiers du projet, ça n'a été trouvé que 2 fois (mainform et aboutform, au début du uses, ça sent le "fichier / nouvelle fiche" dont on ne modifie pas les paramètres de base), je les ai commentées, aucun problème.

    Cette même simple ligne de code dans mon gros projet en cours et bam !
    Preview en vrac, runtime error (204) ou autres insultes. Hélas, commenter Graphics dans ce projet empêche la compilation.
    Et même problème avec BGRAbitmap, qui s'appuie également sur Graphics.

    On avait suspecté des problèmes dans cette unité Graphics, avec l'ami BeanzMaster il y a quelques temps, et ça semble se confirmer...

  3. #3
    Rédacteur

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Billets dans le blog
    84
    Par défaut
    Bonjour Jipété,

    J'ai bien lu tes messages, mais ils manquent d'infos à mon avis. C'est peut-être Graphics, mais dans ce que tu décris, rien ne le prouve.

    Pour ce qui est du composant OPD, il fonctionne bien chez moi sous Windows avec l'option incriminée : mais j'ai fait comme toi, en n'écrivant qu'une ligne de code .

    Qu'appelles-tu fichier incompatible avec Lazarus ? C'est pour le faire planter

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Bonsoir, Gilles,
    Citation Envoyé par gvasseur58 Voir le message
    J'ai bien lu tes messages, mais ils manquent d'infos à mon avis. C'est peut-être Graphics, mais dans ce que tu décris, rien ne le prouve.
    et merci de me harceler, c'est pour mon bien et pour creuser ce problème vraiment bizarre :

    Nouveau projet, un TButton, un TImage et un TOpenPictureDialog.
    Graphics en commentaires dans la section uses.

    d'abord test 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      opd.Execute; // juste l'opd, preview ok
    end;
    puis test 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      //opd.Execute; // juste l'opd, preview ok
      if opd.Execute then image1.Picture.LoadFromFile(opd.FileName); // preview ok + image1 bien chargée
    end;
    et enfin test 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      //opd.Execute; // juste l'opd, preview ok
      if opd.Execute then image1.Picture.LoadFromFile(opd.FileName); // preview ok + image1 bien chargée
      // v3 ajout de AnimatedGif dans uses et exécution --> au clic sur le nom du fichier RunError(204) + invalid pointer operation
    end;
    Je commente et décommente l'ajout de cette unité et un fichier plante la boîte de dialogue ou pas.
    Si crash, un clic sur "Pause" envoie à la ligne 616 de AnimatedGif, va falloir que j'aille farfouiller dans ce .pas avec zéro ligne de commentaire, stay tuned...

  5. #5
    Rédacteur

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Billets dans le blog
    84
    Par défaut
    Bonsoir Jipété once again,

    Citation Envoyé par Jipété Voir le message
    et merci de me harceler, c'est pour mon bien et pour creuser ce problème vraiment bizarre
    Je ne voudrais surtout pas te harceler . Mais bon, si tu penses que c'est pour la bonne cause... En fait, je cherche ce qui ne fonctionne pas, tout comme toi, pour voir si l'on peut l'améliorer.

    Citation Envoyé par Jipété Voir le message
    et enfin test 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      //opd.Execute; // juste l'opd, preview ok
      if opd.Execute then image1.Picture.LoadFromFile(opd.FileName); // preview ok + image1 bien chargée
      // v3 ajout de AnimatedGif dans uses et exécution --> au clic sur le nom du fichier RunError(204) + invalid pointer operation
    end;
    Je commente et décommente l'ajout de cette unité et un fichier plante la boîte de dialogue ou pas.
    Si crash, un clic sur "Pause" envoie à la ligne 616 de AnimatedGif, va falloir que j'aille farfouiller dans ce .pas avec zéro ligne de commentaire, stay tuned...
    Je comprends le principe, mais je ne sais pas où tu as récupéré cette unité AnimatedGIF. Peux-tu proposer un lien ? Sinon, je ne peux pas reproduire l'erreur.

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  6. #6
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Salut

    Citation Envoyé par Jipété Voir le message
    On avait suspecté des problèmes dans cette unité Graphics, avec l'ami BeanzMaster il y a quelques temps, et ça semble se confirmer...
    Si seulement ce n'était que là

    Citation Envoyé par gvasseur58 Voir le message
    Bonsoir Jipété once again,

    Je comprends le principe, mais je ne sais pas où tu as récupéré cette unité AnimatedGIF. Peux-tu proposer un lien ? Sinon, je ne peux pas reproduire l'erreur.

    Gilles
    AnimatedGIF est l'unité "Standalone" qui correspond a l'unité BGRAAnimatedGif de BGRABitmap tu peux la télécharger ici : http://lazarus.johann-elsass.net/animatedgif.zip et le programme test ici : http://lazarus.johann-elsass.net/testgif.zip

    Pour le programme test il faut commenter l'inclusion des fichiers resources dans le lpr. Sinon chez moi le projet test fonctionne parfaitement.

    Citation Envoyé par Jipété Voir le message

    Nouveau projet, un TButton, un TImage et un TOpenPictureDialog.
    Graphics en commentaires dans la section uses.

    et enfin test 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      //opd.Execute; // juste l'opd, preview ok
      if opd.Execute then image1.Picture.LoadFromFile(opd.FileName); // preview ok + image1 bien chargée
      // v3 ajout de AnimatedGif dans uses et exécution --> au clic sur le nom du fichier RunError(204) + invalid pointer operation
    end;
    Je commente et décommente l'ajout de cette unité et un fichier plante la boîte de dialogue ou pas.
    Si crash, un clic sur "Pause" envoie à la ligne 616 de AnimatedGif, va falloir que j'aille farfouiller dans ce .pas avec zéro ligne de commentaire, stay tuned...
    Je viens de tester sous Windows avec ou sans l'unité "Graphics", et avec ou sans "AnimatedGIF" dans les uses. Dans les 4 cas les GIF sont chargés et affichés. Je vais tester sous Linux pour vérifier.

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  7. #7
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Bonjour,

    j'ai travaillé pour vous : voilà un fichier "testimgs.htm" à dézipper dans le dossier contenant les images fournies hier par Jérome et à ouvrir avec votre navigateur préféré.
    testimgs.zip

    L'affichage se présentera ainsi :
    nom_du_fichier_sans_extension=<<et ici l'image si elle veut bien s'afficher>>
    ligne_de_commentaire, éventuellement
    ligne_vide
    et on continue...

    Dans les commentaires il y a parfois des messages d'erreur, relevés avec l'outil bâti sur TGifAnim.

    Un truc curieux : j'ai vu plusieurs fois avec le navigateur bâti sur le compo THtmlViewer proposé par J.P une image grise et bleue affichant "Membership", ainsi qu'une autre montrant une lettre disparaissant dans une boîte aux lettres : sont-ce des images génériques ?
    Quand je regarde les miniatures générées par mon Linux, je ne vois qu'une seule image "boîte aux lettres" et aucune "membership",

    Nom : 29_miniatures.png
Affichages : 385
Taille : 78,9 Ko

    Sinon, pour visualiser tout ça, il est parfaitement possible d'ouvrir le .htm avec une des démos fournies avec le composant, et disponibles dans le dossier HtmlViewer\Demos\Compiled Framedemo (récupérable ici).

    Au vu des résultats, on se rend compte que les rendus sont parfois différents selon le navigateur et le défaut présent dans le fichier.
    • image non visible dans FF car invalid palette index 255 mais visible avec FrameDemo
    • point d'exclamation car manque des datas -- visible dans FF
    • point d'exclamation car invalid pointer operation -- visible avec FF
    • GIF87a, correct sous FF, erreur avec FrameDemo
    • pas d'image sous FF, pas d'animation sous FrameDemo

    Voilà.
    Je m'en vais maintenant voir s'il y aurait moyen de n'utiliser que la partie "visualiseur de gif's" du compo THtmlViewer, tout en pensant à bien blinder de try les ouvertures de fichiers, car on n'est pas au bout de nos surprises dans ce monde mal fini...

  8. #8
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Bonjour,

    j'ai travaillé pour vous : voilà un fichier "testimgs.htm" à dézipper dans le dossier contenant les images fournies hier par Jérome et à ouvrir avec votre navigateur préféré.
    testimgs.zip

    L'affichage se présentera ainsi :
    nom_du_fichier_sans_extension=<<et ici l'image si elle veut bien s'afficher>>
    ligne_de_commentaire, éventuellement
    ligne_vide
    et on continue...

    Dans les commentaires il y a parfois des messages d'erreur, relevés avec l'outil bâti sur TGifAnim.
    Salut,

    Cool ton petit fichier sous Opera preseques toutes les images s'affichent. Et il y a presque les même soucis que dans les commentaires que tu as mis pour

    0646caeb9b9161c777f117007921a687 idem
    243d9798466d64aba0acaa41f980bea6 idem
    2b5bc31d84703bfb9f371925f0e3e57d celle-ci ne s'affiche pas
    5f09a896c191db3fa7ea6bdd5ebe9485 idem
    7092f253998c1b6b869707ad7ae92854 visible mais l'animation se fige comme les deux premier
    adaf0da1764aafb7039440dbe098569b visible mais l'animation se fige
    d5a0175c07418852152ef33a886a5029 ici "Point d'exclamation"

    les autres s'affichent toute correctement

    En passant bien vu pour l'image "tahoe-tiny". J'ai mis à jour le Zip je n'avais pas vu que j'avais mal enregistré ce fichier. Cette dernière est correcte et s'affiche.

    EDIT :

    Affichage sous l'explorateur dans Windows 10

    Nom : 2018-05-27_085949.jpg
Affichages : 394
Taille : 138,8 Ko]

    Affichage dans mon outil de visualisation "FastOne ImageViewer"

    Nom : 2018-05-27_085949a.jpg
Affichages : 368
Taille : 182,3 Ko
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  9. #9
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Tiens, j'ai trouvé un fichier pas trop lourd, et qui me cause un SIGSEGV à l'affichage :

    2gifs.zip

    Et que ce soit avec l'OpenPictureDialog (dont la preview fonctionne bien) ou l'OpenDialog tout court (à qui j'ai demandé AutoPreview dans les options de l'EDI mais ça n'est pas pris en compte).

    Il me suffit de commenter la seconde ligne d'initialisation (voir post précédent) pour m'affranchir de l'erreur, erreur qui ne se produit pas avec Animaux-0.gif
    Correction : avec ce fichier Animaux-0.gif, le sigsegv se produit à la fermeture du programme.
    Correction de la correction : se produit maintenant également à l'ouverture...
    Mais pas à tous les coups : encore de l'informatique aléatoire, ma préférée,

    Pas besoin d'acheter un ordinateur quantique, le mien l'est déjà,

    EDIT : les deux fichiers du zip n'ont aucun problème avec le compo TGifAnim dont j'ai déjà parlé.

  10. #10
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut Attention avec les téléchargements.
    Il y a un mystère (pour moi) sur la page du compo TGifAnim : quand on regarde les fichiers, dans le dossier gifanim/gifanim on trouve bien les fichiers correspondant au compo TGifAnim, mais on trouve aussi un dossier testgif qui a l'air de correspondre au TAnimatedGif dont je n'arrête pas de parler.

    Et rien pour l'indiquer...

    Ne vous faites pas de nœuds !

  11. #11
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Hi !


    Partant de là je viens de regarder à nouveau le code d'AnimatedGif, et la seule chose qui puisse causer le souci sans que j'y appelle du code c'est un truc qui se passe dans mon dos, et en effet, tout en bas du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    initialization
     
      //Free Pascal Image
      ImageHandlers.RegisterImageReader ('Animated GIF', TAnimatedGif.GetFileExtensions, TFPReaderGIF);
     
      //Lazarus Picture
      TPicture.RegisterFileFormat(TAnimatedGif.GetFileExtensions,'Animated GIF', TAnimatedGif);
    end.
    Si je commente la seconde ligne et que je garde la première active, la preview ne plante plus !
    Si je commente la première et que je garde la seconde active, la preview plante. On avance : à quoi ces deux lignes peuvent-elles bien servir ?
    Qu'est-ce qu'elles rajoutent comme trucs et machins qui font que la preview plante si la seconde est présente ?

    Et à quoi peuvent-elles bien servir si je peux ouvrir le fichier sans AnimatedGif (et sans animation, du coup) ? Car d'après l'aide, la seconde aurait un rapport avec LoadFromFile (pas d'aide pour la première).
    La première ligne déclare que FPImage doit utiliser TFPReaderGIF pas obligatoire d'ailleurs, car elle est également présente dans FPReadGIF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    initialization
      ImageHandlers.RegisterImageReader ('GIF Graphics', 'gif', TFPReaderGif);
    La seconde ligne déclare à Lazarus qu'il peux également utiliser AnimatedGIF

    Nom : opdgif.jpg
Affichages : 492
Taille : 38,3 Ko

    Citation Envoyé par Jipété Voir le message
    Tiens, j'ai trouvé un fichier pas trop lourd, et qui me cause un SIGSEGV à l'affichage :


    Et que ce soit avec l'OpenPictureDialog (dont la preview fonctionne bien) ou l'OpenDialog tout court (à qui j'ai demandé AutoPreview dans les options de l'EDI mais ça n'est pas pris en compte).

    Il me suffit de commenter la seconde ligne d'initialisation (voir post précédent) pour m'affranchir de l'erreur, erreur qui ne se produit pas avec Animaux-0.gif
    Correction : avec ce fichier Animaux-0.gif, le sigsegv se produit à la fermeture du programme.
    Correction de la correction : se produit maintenant également à l'ouverture...
    Mais pas à tous les coups : encore de l'informatique aléatoire, ma préférée,

    Pas besoin d'acheter un ordinateur quantique, le mien l'est déjà,

    EDIT : les deux fichiers du zip n'ont aucun problème avec le compo TGifAnim dont j'ai déjà parlé.
    De mon coté je n'ai pas eu ce problème avec animaux-0.gif (par contre pas pu tester ta seconde image elle n'y est pas dans le zip)

    J'ai testé avec d'autre GIF qui plante avec AnimatedGIF mais pas avec la solution native de FPC/Lazarus

    Je pense qu'il y a conflit avec les GIFs et l'utilisation d'unité tierces comme c'est le cas ici avec AnimatedGIF.

    En ce qui concernent le composant TGIFAnim celui-ci charge l'image par ces propres moyens sans passer par FPReadGIF ou autres classe comme TGIFImage qui est déclarée dans l'unité Graphics. L'OpenPictureDialog lui utilise forcément les unités de FPC et Lazarus. D'après ce que j'ai pu voir vite fait dans le code. La cause est la mauvaise gestion des erreurs dans le code de FPReadGIF et dans Graphics.
    Tout comme le format BMP, le code pour lire format GIF n'est pas implémenté correctement . La meilleur gestion des erreurs dans FPC/Lazarus est encore celle pour les images JPEG elle n'est pas parfaite, mais à le mérite de lever des exceptions au lieux de te balancer des SIGSegv et autres messages d'insultes.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  12. #12
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    De mon coté je n'ai pas eu ce problème avec animaux-0.gif (par contre pas pu tester ta seconde image elle n'y est pas dans le zip)
    Tu plaisantes, j'espère ?

    Nom : 2gifs.png
Affichages : 487
Taille : 36,1 Ko
    Image prise après avoir téléchargé le fichier en cliquant sur le lien que j'ai fourni, comme si j'étais n'importe qui. Et "clic droit / extraire ici" m'a bien posé deux fichiers "ici".

    Citation Envoyé par BeanzMaster Voir le message
    J'ai testé avec d'autre GIF qui plante avec AnimatedGIF mais pas avec la solution native de FPC/Lazarus
    Solution native ? Aurais-je loupé un épisode ? Dis-m'en plus, stp.

    Citation Envoyé par BeanzMaster Voir le message
    En ce qui concernent le composant TGIFAnim celui-ci charge l'image par ces propres moyens sans passer par FPReadGIF ou autres classe comme TGIFImage qui est déclarée dans l'unité Graphics.
    Alors lui il me gonfle je te dis pas !
    Impossible de faire fonctionner un composant créé dynamiquement, le seul capable d'afficher des images c'est un compo pris dans la palette de compos et posé sur la fiche...
    Hallucinant.
    En plus, charger des images les unes derrière les autres ça ne va pas : l'image "n" s'affiche avec les dimensions de l'image "n-1", et je n'arrive pas à trouver le pourquoi du comment.


    De mon côté, j'ai dégotté un truc sympa sur un forum espagnol, mais qui date de 2010, résultat, bien que la chose soit certifiée pour Lazarus, il y a de gros problèmes de dézippage (ou autres) qui se manifestent par des images incomplètes.
    Sous Windows, parce que sous Linux, après avoir remplacé les CopyMemory(dest source size) par des Move(source dest size) c'est du grand n'importe quoi : images juste pleines de bruits (pixels multicolores) et c'est tout.
    Pour les curieux, c'est là, en bas, mais pas le .rar : il faut être enregistré...
    Remontez un poil au-dessus. C'est commenté en espagnol, mais compréhensible.

    Ce qui est rigolo avec ce truc, c'est qu'il enregistre bien les images qu'il affiche mal,

  13. #13
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Alors lui il me gonfle [le TGifAnim] je te dis pas !
    Impossible de faire fonctionner un composant créé dynamiquement, le seul capable d'afficher des images c'est un compo pris dans la palette de compos et posé sur la fiche...
    Hallucinant.
    En plus, charger des images les unes derrière les autres ça ne va pas : l'image "n" s'affiche avec les dimensions de l'image "n-1", et je n'arrive pas à trouver le pourquoi du comment.
    Réglé son principal problème suite à détection d'un simple oubli (à force d'avoir le nez sur le guidon, on en oublie de regarder le paysage, c'est bien connu) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.btnBrowseClick(Sender: TObject);
    begin
      if not opd.Execute then exit; // previews ok
     
      if ga <> nil then FreeAndNil(ga);
     
      ga:= TGifAnim.Create(Self);
      with ga do begin
        Parent   := Form1; // ! \ <<<--- l'oubli !
        Left     := 150;
        Top      := 20;
        FileName := opd.FileName;
      end;
    end;
    Et du coup ce composant fonctionne du feu de Dieu, sauf un méchant problème de Invalid Palette Index (255) avec 1 fichier, pas le même que jusqu'à présent, et le pire c'est que je ne vois pas où cette valeur est calculée, que la pile d'appels me montre que le contrôle et la remontée de l'erreur c'est dans fppalette.inc mais qu'un point d'arrêt à l'endroit qui va bien n'arrête rien du tout...

Discussions similaires

  1. [Lazarus] [Linux/Windows] Bug de Canvas.Rectangle ou mauvaise utilisation ?
    Par Jipété dans le forum Lazarus
    Réponses: 5
    Dernier message: 22/06/2018, 10h43
  2. Logiciel pr emulation d'autres OS ( linux, windows...)
    Par elitost dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 14/07/2005, 17h16
  3. snmp linux windows
    Par Aramis dans le forum Développement
    Réponses: 2
    Dernier message: 19/06/2005, 23h39
  4. Réponses: 13
    Dernier message: 13/03/2005, 20h56
  5. Les fichiers sous linux/windows
    Par Stessy dans le forum Linux
    Réponses: 5
    Dernier message: 05/12/2003, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo