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 :

Write once, compile anywhere, fais tourner l'exe et paf !


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 Write once, compile anywhere, fais tourner l'exe et paf !
    Bonsoir,

    Rions un peu avec le multi-plateforme...
    Voilà le résultat du même code (c-à-d zéro code, juste le composant TTrackBar posé sur la feuille) à gauche dans Linux 32 bits et Lazarus 1.4/FPC 2.6.4, et à droite dans XP Pro 32 bits et Lazarus 1.6rc1/FPC 3.0 :

    Nom : trackbar.jpg
Affichages : 368
Taille : 4,8 Ko

    Je ne sais pas encore comment je vais gérer cette pagaille...
    Sans doute à grands coups de {IFDEF LINUX} mais pour un rendu visuel identique du compo, c'est mort.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Bonjour,

    Affirmer Write once, compile anywhere n'implique pas qu'on obtienne le même look sur différents systèmes, et encore moins en utilisant des versions différentes.

  3. #3
    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 droggo Voir le message
    Affirmer Write once, compile anywhere n'implique pas qu'on obtienne le même look sur différents systèmes,
    Pas le même look, j'aurais pu m'adapter, mais

    Citation Envoyé par droggo Voir le message
    et encore moins en utilisant des versions différentes.
    quand on voit comment est traitée la TListview (c-à-d non traitée), de version en version, je ne vois pas pourquoi je me prendrais la tête à migrer pour rien, pour les points qui m'intéressent.
    Parce que ce que je constate, là, c'est une perte de fonctionnalités en passant de Linux à Windows, or il se trouve que la version a évolué, du pingouin aux fenêtres, et là j'y perds en fonctionnalités !
    Régression ?
    Alors ? Sous Windows je redescends en 1.4.0 ?
    Bah, je suis à peu près sûr que le résultat sera le même : comme pour la TListview, tout n'est pas développé...

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Clairement, pour les composants qui wrappent ceux natifs des API de l'OS, le rendu ne peut être identique en passant de l'un à l'autre.

    La solution résiderait peut-être (à terme) dans fpGUI ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    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
    Salut, YL !
    Citation Envoyé par tourlourou Voir le message
    Clairement, pour les composants qui wrappent ceux natifs des API de l'OS, le rendu ne peut être identique en passant de l'un à l'autre.
    Que le rendu ne soit pas identique, j'aurais pu m'adapter, comme je le disais ; mais là (comme pour la Listview), ça va plus loin, je trouve : c'est au niveau des fonctionnalités !
    Évidemment, si ça dépend de l'OS, alors là c'est mort...
    J'avais envisagé un instant, lors de discussions avec Gilles à propos de la Listview de passer à Qt, mais il me l'a déconseillé. Peut-être Gtk3, alors ? Je fouillerai dès que j'aurai du temps...

    Citation Envoyé par tourlourou Voir le message
    La solution résiderait peut-être (à terme) dans fpGUI ?
    [EDIT]
    L'outil pour lequel on a vu passer une news il y a environ 2 ou 3 mois ? Je l'ai téléchargé, installé (avec un peu des misères liées à des chemins) et, suivant le tuto d'install, j'ai essayé de faire tourner le premier test, sans jamais y parvenir !
    J'ai abandonné et tout viré.
    C'est à se demander si les gens qui codent ça testent dans les autres environnements...

    J'ai fait une confusion avec MSEGui et MSEide, désolé. [/EDIT]

    Bon pont

  6. #6
    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 La blagounette du dimanche matin...
    Salut !

    Je voulais essayer de comprendre ce qui se passe avec un programme (venant de l'excellent site d'efg et converti laborieusement) car, lorsque juste après son lancement je passe la souris sur l'arc-en-ciel, les radio-boutons se décalent (alors qu'il y a zéro code dans la procédure ImageMouseMove concernant ce comportement : en fait, cette proc sert juste à faire afficher en grand [et plus loin et plus bas que le RadioGroup] la couleur que la souris survole : pas de quoi fouetter un chat !)
    Regardez l'image (c'est un montage, pour bien montrer le décalage avant et après le MouseMove) :
    Nom : décalage_radiobuttons.jpg
Affichages : 324
Taille : 25,5 Ko

    Alors, oui, ça n'est pas bien grave, mais ça chatouille l'œil qui détecte que quelque chose a bougé et ne sait pas quoi : c'est perturbant.

    Bref, comme j'ai toujours ces problèmes d'exécution cassée en mode pas-à-pas (j'en avais parlé il y a longtemps), j'ai décidé d'essayer le code sans en changer une virgule dans une machine XP où tourne Laz1.6rc1 et là, au lancement, avant même de voir la fiche du programme, une superbe fenêtre d'access violation avec l'assembleur qui me crache ses insultes et voilà, quoi...

    Sous Windows le pas-à-pas ayant l'air de fonctionner, j'ai essayé mais je me suis retrouvé dans des fichiers .inc pas très parlants et de toute façon, je ne vais pas aller trifouiller là-dedans.
    Ah, le gag c'est que le zip fourni par efg inclut un binaire (compilé avec sans doute un Delphi 3 ou 4 ou 5) pour Windows qui... s'exécute impécablement

    Je ne demande pas une solution, je sais qu'il n'y en a pas, c'était juste le coup de gueule du dimanche matin -- tiens, j'vais aller faire un tour au marché, ça me changera les idées, parce que le code, il y a des jours, franchement...

  7. #7
    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
    Salut, et bon marché !


    Je voulais essayer de comprendre ce qui se passe avec un programme (venant de l'excellent site d'efg et converti laborieusement)
    Je confirme qu'il s'agit d'un excellent site. Mais je réaffirme aussi que le comportement ET l'aspect des contrôles de base sont dépendants du système d'exploitation. Il est parfois possible d'unifier le tout en passant d'un OS à un autre, mais ce n'est pas toujours le cas. D'ailleurs, même l'aspect des fenêtres (et leur fonctionnement) est différent suivant l'OS utilisé, et ça ne gêne pas plus que de changer de voiture ou de s'adapter à une nouvelle conduite...

    Le "compiler une fois" reste, à mon avis, valable : il garantit que le programme fonctionnera au mieux sur différents OS, dans les limites de la transcription des bibliothèques. Il ne peut en revanche jamais garantir un fonctionnement uniforme. La plupart des dysfonctionnements ne viennent pas de Free Pascal (LAzarus), mais de ces différences fondamentales.

    Encore une petite chose : il ne faut pas utiliser les versions intermédiaires (RC1, RC2...), car elles contiennent des bogues (elles sont faites pour être testées massivement). La version 1.6RC1 de Lazarus est connue pour ses problèmes de débogueur !

    Dans mon village, le marché se tient le lundi matin : je saurai patienter
    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

  8. #8
    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 gvasseur58 Voir le message
    Mais je réaffirme aussi que le comportement ET l'aspect des contrôles de base sont dépendants du système d'exploitation. Il est parfois possible d'unifier le tout en passant d'un OS à un autre, mais ce n'est pas toujours le cas.
    T'as oublié un poil de magie et un soupçon de vaudou,

    Citation Envoyé par gvasseur58 Voir le message
    D'ailleurs, même l'aspect des fenêtres (et leur fonctionnement) est différent suivant l'OS utilisé, et ça ne gêne pas plus que de changer de voiture ou de s'adapter à une nouvelle conduite...
    Je réussis à masquer le défaut en bidouillant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TFormSpectra.FormActivate(Sender: TObject);
    begin
      // tout ça pour masquer le "resize" du RadioGroup...
      ImageSpectraMouseMove(nil,[ssLeft],0,0);
      ShapeColorBox.Visible    := False;
      LabelColorBoxNm.Visible  := False;
      LabelColorBoxTHz.Visible := False;
      ButtonColorBox.Enabled   := False;
      LabelRGB.Caption         := '';
    end;
    On ne m'ôtera pas de l'idée qu'il se passe des choses bizarres : pourquoi le RadioGroup retaille un peu ses items en mode horizontal (mais pas en vertical) si je passe la souris sur le TImage
    Parce que le code du MouseMove, je le répète, n'a rien à voir avec la taille des colonnes et des items du RadioGroup, mais alors, rien de chez rien !

    Bon, j'ai trouvé : c'est le fait de rendre visibles les labels en bas à droite ou le TShape blanc dans cette proc MouseMove qui fait déplacer les items dans le RadioGroup : on est bien d'accord qu'on marche sur la tête, là, non ?
    Nom : 2_labels_coupables.png
Affichages : 325
Taille : 20,0 Ko

  9. #9
    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
    Citation Envoyé par Jipété Voir le message
    Bon, j'ai trouvé : c'est le fait de rendre visibles les labels en bas à droite ou le TShape blanc dans cette proc MouseMove qui fait déplacer les items dans le RadioGroup : on est bien d'accord qu'on marche sur la tête, là, non ?
    Bon, je crois avoir trouvé aussi, car le problème est récurrent : l’affichage de nouveaux contrôles va déclencher un Repaint de la fiche et une adaptation des éléments affichés par re-calcul de leurs dimensions et de leur emplacement, avec des arrondis. Le décalage doit venir du résultat de ces calculs : je te rappelle que je ne suis pas un fan des techniques vaudous (je ne suis pas superstitieux parce que ça porte malheur ).
    C'est en fait le seul réel problème que je rencontre lorsque j'écris une application qui doit tourner sur Windows et Linux : par exemple, les deux OS ne gèrent pas de la même manière l'affichage des Caption de TLabel , Linux ayant tendance à nécessiter plus de place ; idem pour les glyphes des TBitButton... Si la base du programme et 99% des procédures sont communes, l’interface graphique a souvent besoin de retouches. Personnellement, je ne retouche qu'elle, sans adapter les procédures comme tu le proposes : à mon avis, il vaut mieux une différence d'affichage qu'une rustine difficile à comprendre et par conséquent à maintenir.

    Cela dit, si je me trompe, joins un fichier à compiler
    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

  10. #10
    Membre émérite
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Par défaut
    Hello Jipété

    Tu devrais essayer de programmer avec Lazarus pour Android. Là, tu verras de vraies différences !

    J'en parle parce que d'honorables geeks ont inventé il y a déjà plusieurs années les composants visuels "CustomDrawn" qui font très peu appel aux systèmes d'exploitation et dessinent et gèrent tout ou presque avec du code Pascal. Cela résout théoriquement les problèmes dont tu te gausses, et c'est à mon avis la seule solution qui permet d'espérer avoir le même code et les mêmes composants visuels sur des systèmes et interfaces très différents.

    Entre Windows, Linux et OS/X, c'est opérationnel, mais pour très peu de composants, avec peu de propriétés. Il manque encore beaucoup de choses et cela semble au point mort, De plus ça ne marche plus à partir d'Android 5.

    Alors si tu as le temps en rentrant du marché, tu peux regarder et aider la communauté en construisant un contrôle manquant, ou en ajoutant des propriétés et événements à ceux qui existent, comme je l'ai fait l'an dernier.

    Ce sera plus utile que de râler.

Discussions similaires

  1. [IDE][VS2005] Comment compiler projet et obtenir un exe ?
    Par Bing dans le forum Visual Studio
    Réponses: 18
    Dernier message: 07/11/2008, 21h15
  2. [VB6] Compiler une image dans un exe
    Par Vince dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 27/04/2006, 08h27
  3. compilation-link influence sur l'exe ?
    Par reptils dans le forum C++
    Réponses: 24
    Dernier message: 14/02/2006, 20h00
  4. Probleme en compilant le code avec C2.EXE ?!?!?
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/11/2005, 16h13
  5. [VB] COmment compiler une dll dans un exe (zlib.dll)
    Par Khrysby dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/11/2005, 12h10

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