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 :

[Linux] Problème de message incompréhensible issu d'un compilateur frappadingue [Lazarus]


Sujet :

Lazarus Pascal

  1. #21
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Merci pour ton retour

    Citation Envoyé par BeanzMaster Voir le message
    Sinon il y a 2 erreurs dans la fonction MakeCircle
    sous Linux ou sous Windows ?
    Et comment se fait-il ne je n'aie jamais eu ces erreurs ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #22
    Expert confirmé
    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
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Merci pour ton retour


    sous Linux ou sous Windows ?
    Et comment se fait-il ne je n'aie jamais eu ces erreurs ?
    Sous Windows et oui bizarre surtout la Division par zero qui est inévitable dans ton code. Une option dans le projet ou l'ide de ton coté ?
    Je testerai sous Linux un peu plus tard
    • "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

  3. #23
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Sous Windows et oui bizarre surtout la Division par zero qui est inévitable dans ton code. Une option dans le projet ou l'ide de ton coté ?
    Pas que je sache.
    Bon, c'est déjà publié, de l'autre côté.

    Citation Envoyé par BeanzMaster Voir le message
    Je testerai sous Linux un peu plus tard
    Oui, avec plaisir.

    Ah j'en ai trouvé un tout seul, alors profite :
    Dans ComputeOptimalSizes;, tout en bas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      ...
        memo1.Visible   := False;
    //    Height := pnl4courbes.Top + pnl4courbes.Height + ckbxFirstLine.Height + 10;
      {$ENDIF}
    end;
    à commenter sinon impossible de passer en plein écran.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #24
    Expert confirmé
    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
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Sous Windows et oui bizarre surtout la Division par zero qui est inévitable dans ton code. Une option dans le projet ou l'ide de ton coté ?
    Je testerai sous Linux un peu plus tard
    Je viens de tester sous Linux aucunes exceptions levées

    du coup après une petite recherche vite fait, voici le pourquoi : http://wiki.lazarus.freepascal.org/M...FPU_exceptions

    Gtk2 and masking FPU exceptions
    Gtk2 library changes the default value of FPU (floating point unit) exception mask. The consequence of this is that some floating point exceptions do not get raised if Gtk2 library is used by the application. That means that, if for example you develop a LCL application on Windows with win32/64 widgetset (which is Windows default) and plan to compile for Linux (where Gtk2 is default widgetset), you should keep this incompatibilities in mind.
    ......
    However, with Gtk2, only exOverflow is not masked.

    The consequence is that EInvalidOp and EZeroDivide exceptions do not get raised if the application links to Gtk2 library]! Normally, dividing non-zero value by zero raises EZeroDivide exception and dividing zero by zero raises EInvalidOp
    Le problème c'est que ce genre de chose peut entrainer des erreurs "en mémoire"

    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

  5. #25
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Le problème c'est que ce genre de chose peut entrainer des erreurs "en mémoire"
    Des grands malades ! C'est vraiment des grands malades pour inventer un système où les erreurs sont gérées dans un environnement et pas dans l'autre.

    Tu m'anéantis avec cette information.
    Et combien de blagues similaires planquées au coin du bois et prêtes à nous sauter dessus pour nous agresser dès la nuit tombée, mmmh ?

    Bref, merci à toi d'avoir fouillé et levé ce lièvre, à charge pour nous de ne pas l'oublier.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #26
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut salut,

    je me suis amusé à créer un projet minimaliste reprenant la map de 24 couleurs pour tester sous Windows, et les galères commencent.
    Citation Envoyé par BeanzMaster Voir le message
    et il faut modifier

    pos_px := (w+rayon); par pos_px := (w+rayon)-1; sinon SIGSEGV --> Index hors limite dans la ligne (on commence a zero. Si la largeur = 100px Index Max = 99px)
    Obligé de conserver pos_px := (w+rayon); parce que l'ajout du -1 génère des indices négatifs pas bons du tout. M'en suis sorti avec un balayage configuré ainsi : w := -rayon to rayon-1, et si je poste ce soir, c'est parce que j'ai une autre sale blague, que personne n'a relevé et que je suspecte donc d'être attachée au fait que dans ce nouveau projet light j'ai fait sauter tout ce qui avait un rapport avec le redimensionnement du TImage d'affichage (et les TBitmaps sous-jacents) et son adaptation à une division par 24.

    Résultat des courses, cette horreur à droite :
    Nom : sous_XP.png
Affichages : 138
Taille : 190,0 Ko

    Et j'en ai des pires. Tu n'as pas vu ça chez toi ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #27
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Bonjour,

    Dans tout ce qui suit je me concentre sur la partie droite, la partie gauche n'ayant pas de soucis.

    J'ai réglé le problème en forçant les dimensions du TImage à des valeurs divisibles par 24. Je suspecte que le défaut d'origine soit en rapport avec des valeurs fantaisistes liées au padding des lignes du bitmap sous-jacent, c'est le problème quand on bricole avec RawImage, pRGBtriple et ce genre de choses bas niveau.

    Nom : valeurs_folles.png
Affichages : 101
Taille : 106,4 Ko

    Vous remarquerez dans la barre de titre du prog en mode "étude" des valeurs concernant le TImage qui ne correspondent pas à la réalité et ça, c'est un brave mystère et un sacré piège !

    Le TImage est Align := alClient, son espace vital est déterminé par les panneaux qui le bordent, ces 4 panneaux d'encadrement sont inclus dans un autre, qui a une largeur de 217 et une hauteur de 279 (valeurs "exotiques" pour mettre en évidence les défauts d'alignement).

    Si je fais 217 - (12 + 13) ça donne 192, parfaitement divisible par 24 (= 8). Pourquoi l'image affichée correctement annonce-t-elle 157 dans la barre de titre (qui est sa valeur à la conception, l'autre c'est 179) ?
    Même remarque avec la hauteur : 279 - (43 + 44) = 192, donc le TImage est bien à 192 x 192 (ce qui est le but recherché), et ce n'est pas du tout ce qui est affiché.

    Les choses se passent dans une procédure qui au début redimensionne les panneaux, correctement comme on peut le voir, et à la fin affiche les dimensions du TImage, en vrac alors que l'objet est correct.
    Si vous avez des calculs basés là-dessus, vous êtes mort.

    Ça m'épuise, des choses pareilles, ça me fait perdre un temps dément, et ce résultat débile est identique sous Linux comme sous XP.
    C'est quand même fou d'avoir un truc aussi aléatoirement peu fiable.
    Non ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [ovh] message incompréhensible
    Par sami_c dans le forum OVH
    Réponses: 4
    Dernier message: 29/01/2007, 16h15
  2. Entier 64 bits sous linux, problème d'affectation
    Par Steki-kun dans le forum Linux
    Réponses: 2
    Dernier message: 13/01/2005, 21h10
  3. [Linux]Problème System.out.println + compiler
    Par Dnx dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/09/2004, 22h05
  4. [Linux]probléme d'installation
    Par rahmouni ali dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/07/2004, 11h26
  5. messages incompréhensibles
    Par devalender dans le forum Outils
    Réponses: 2
    Dernier message: 06/07/2004, 16h53

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