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 :

Conversion Delphi vers Lazarus - Error: Ordinal expression expected [Lazarus]


Sujet :

Lazarus Pascal

  1. #21
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Après vérification, j'ai constaté que les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      object XPManifest1: TXPManifest
        Left = 385
      end
    avaient été remises dans le lfm de ma fiche principale . Je les avais enlevées hier .

    Enfin bon! Je renonce à comprendre.

    Maintenant, ça compile et le programme s'exécute. Du moins techniquement, parce que le résultat est navrant . La plus grande partie de l'interface réside en un tableau interactif dessiné sur un TCanvas. Là, il est tout noir. Je n'ai plus mes menus et les lettres accentuées ne sont pas reconnues partout .

    Write once Compile anywhere, vous êtes sûrs . En même temps, si: ça a compilé.

  2. #22
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Croisement de post.

    Citation Envoyé par Jipété Voir le message
    Et là-dedans :
    Pièce jointe 377417
    T'es allé voir là-dedans ?
    Ben j'y étais allé hier et j'avais enlevé la référence de la clause uses, puisque je voulais me débarrasser du manifest dont Lazarus ne voulait pas. Donc, le message est logique d'une certaine manière. Mais en revérifiant tout à l'heure tous les lfm, j'ai constaté que la référence avait été remise dans base.lfm. Je l'ai ré-enlevée (têtu) mais au lieu de compiler tout de suite, j'ai basculé unité/fiche (hier je ne pouvais pas) et j'ai constaté la disparition du composant TXPManifest. J'ai lancé la compil à la suite et ça a fonctionné. Enfin si on peut dire (voir mon post précédent).

    Encore des comportements plus ou moins erratiques.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 154
    Par défaut
    Citation Envoyé par naute Voir le message
    La plus grande partie de l'interface réside en un tableau interactif dessiné sur un TCanvas. Là, il est tout noir. Je n'ai plus mes menus et les lettres accentuées ne sont pas reconnues partout .
    Bon, ben maintenant va falloir séparer les problèmes :
    - image noire sous Linux et pas sous Windows (c'est bien ça ?) d'un côté, dans un nouveau post dédié à ça (pi fais une recherche sur le forum avec image noire, tant bien ça "remonte") ;
    - caractères accentués paumés dans un autre post, quand tu auras retrouvé ton canvas et tes menus (les 2 sont peut-être liés).

    Citation Envoyé par naute Voir le message
    Write once Compile anywhere, vous êtes sûrs . En même temps, si: ça a compilé.
    Bienvenue au club !


    HS
    Ce que je ne comprends pas, c'est que ce genre de choses (l'image noire, dont j'ai souffert aussi, sauf que là maintenant tout de suite je ne me souviens pas de la soluce...) aurait dû être masqué à l'utilisateur final (nous !), à charge pour les couches bas niveau de s'adapter à l'environnement. Bref...
    /HS

    EDIT : un truc à tenter concernant cette histoire d'image noire.
    Quand je trafique le Canvas du Bitmap d'un TImage, je rajoute l'instruction Image.Picture.Bitmap.Canvas.Changed; et... ça change la vie !
    /EDIT

  4. #24
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Bon, ben maintenant va falloir séparer les problèmes :
    - image noire sous Linux et pas sous Windows (c'est bien ça ?) d'un côté, dans un nouveau post dédié à ça (pi fais une recherche sur le forum avec image noire, tant bien ça "remonte") ;
    - caractères accentués paumés dans un autre post, quand tu auras retrouvé ton canvas et tes menus (les 2 sont peut-être liés).
    Oui, ou tout réécrire . On va essayer d'éviter ça.

    Juste pour te donner un aperçu:

    Nom : manifest_3.png
Affichages : 474
Taille : 16,0 Ko

    Le canva tout noir et l'affichage aléatoire des caractères accentués (et l'€uro). Et ce ne sont que des TLabel officiels. Enfin bon !

    Pour les caractères, je vais utiliser
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    chaineUTF8:=ISO_8859_15ToUTF8(chaine);

  5. #25
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Avec tout ça, on avait perdu de vue la question qui était à l'origine de ce fil. Et bien ce problème a disparu comme par enchantement. C'est quand même un peu dingue .

    Tout ce que j'ai fait, ça a été supprimer les références à TXPManifest.

    Je vais donc marquer ce fil résolu, mais j'aimerais bien qu'on m'explique.

    Merci à tous pour votre aide ,
    amicalement,
    naute.

    Edit: Mais non, je dis n'importe quoi. La solution a été donnée par Roland au début. Besoin d'un p'tit café moi

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 154
    Par défaut
    HS

    Un peu de typographie (c'est mon autre passion) :
    Citation Envoyé par naute Voir le message
    Nom : manifest_3.png
Affichages : 474
Taille : 16,0 Ko
    1. tu vires1 tous tes soulignements, qui ne servent à rien à part brouiller la lecture ;
    2. il y a toujours une (oui, au féminin dans ce contexte, n'importe quel bon dico te le confirmera) espace insécable avant un signe de ponctuation "double" (dans le sens où il comporte 2 dessins élémentaires comme ; : ! ? », « étant le cas particulier où la dite espace est après) ;
    3. les majuscules à Pour et au second Du ne servent à rien : ces mots ne commencent pas une phrase, ils sont juste à la suite des mots précédents, même si disposés à la ligne suivante ;
    4. pourquoi Gîte sélectionné au singulier et Gîtes fermés au pluriel ? C'est... comment dire, curieux.


    ---
    1 : c'est Saint-Ex' qui disait que
    Citation Envoyé par Saint-Ex'
    La perfection, ce n'est pas quand il n'y a plus rien à ajouter, c'est quand il n'y a plus rien à enlever.
    Bim !

    /HS, retour au code : as-tu remarqué que le premier Gîte est correctement affiché, au niveau du î, alors que l'autre non : qu'est-ce qui change, de l'un à l'autre

  7. #27
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Citation Envoyé par Jipété Voir le message
    tu vires1 tous tes soulignements, qui ne servent à rien à part brouiller la lecture ;
    Je ne suis pas contre. C'était seulement, dans ma tête, pour bien séparer la partie affichage fixe de celle liée au contexte.

    Citation Envoyé par Jipété Voir le message
    il y a toujours une (oui, au féminin dans ce contexte, n'importe quel bon dico te le confirmera) espace insécable avant un signe de ponctuation "double" (dans le sens où il comporte 2 dessins élémentaires comme ; : ! ? », « étant le cas particulier où la dite espace est après) ;
    Encore une règle que je ne connaissait pas. Par contre, en ce qui concerne l'espace au féminin, il s'agit, pour moi, du nom de la pièce métallique utilisée en typographie pour ménager un espace entre deux caractères imprimés, et non pas du nom de l'espace en lui-même. Et comme nous utilisons tous des imprimantes ou des écrans pour afficher nos textes, cette pièce n'est pas utilisée. Mais ce n'est qu'une opinion

    Citation Envoyé par Jipété Voir le message
    les majuscules à Pour et au second Du ne servent à rien : ces mots ne commencent pas une phrase, ils sont juste à la suite des mots précédents, même si disposés à la ligne suivante ;
    D'accord. Je trouvais que cela faisait plus joli, mais mon sens de l'esthétique peut-être très contestable.


    Citation Envoyé par Jipété Voir le message
    pourquoi Gîte sélectionné au singulier et Gîtes fermés au pluriel ? C'est... comment dire, curieux.
    Il y a trois gîtes louables séparément. Dans l'exemple, les trois sont fermés, ce qui conduit à cet affichage. L'affichage du cas général Gîte sélectionné n'est simplement pas supprimé de la fiche.
    Quant à la différence d'affichage des accents, elle est due au fait que les titres sont codés en dur alors que les autre affichage sont déterminés pendant le déroulement du programme. C'est du moins mon raisonnement.

    Amicalement,
    naute.

  8. #28
    Membre chevronné

    Homme Profil pro
    Autre
    Inscrit en
    Novembre 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Novembre 2015
    Messages : 145
    Par défaut
    Je n'ai pas suivi toute la discussion (désolé), mais si avez avez bien suivi la proposition initiale de Roland Chastain (i.e. changement d'encodage du/des fichiers .pas, qui était une bonne idée à la base) et que vous renseignez le texte de certains de vos contrôles au niveau de votre programme (par exemple Label1.Caption:='Gîtes fermés'; ) vous aurez certainement des soucis.

    La bibliothèque graphique de Lazarus (LCL) utilise de l'UTF8 par défaut; vouloir la contrarier, c'est nécessairement aller au devant des problèmes (de mon point de vue).

    Donc, soit vous revenez à l'encodage UTF8 des fichiers .pas (et vous devez alors modifier votre code de départ qui pose problème), soit vous changez partout le texte de vos contrôles au niveau de vos fichiers .pas (déconseillé).

    Exemple pour un encodage Ansi (i.e. CP1252) des fichiers .pas (mais c'est pour Windows, je ne sais ce qu'il en est pour Linux);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses
       ..., LazUTF8, ...
     
    ...
     Label1.caption := WinCPToUTF8('Gîtes fermés');
    ...


    *** Edit ***

    De toute façon, si votre code de départ (i.e. " if not (Key in [' ','-','a'..'z','A'..'Z','é','è','ê','î','ï','ô','ç','à','ù',Chr(VK_BACK), Chr(VK_DELETE)])") est présent dans une fonction de type "OnKeyPress(Sender: TObject; var Key: char) ;", cela ne marchera pas (i.e. la valeur dans Key est incorrecte pour des caractères non ASCII; encore une fois la LCL utilise de l'UTF8).

    Utilisez plutôt une fonction de type "OnUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char) ;" et modifiez votre code pour tester les valeurs de UTF8Key.


    *** Edit2 ***

    Exemple de test pour une fonction de type "OnUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char) ;" , pour une version récente de Free Pascal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.FormUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
    begin
      case UTF8Key of
      ' ','-','a'..'z','A'..'Z','é','è','ê','î','ï','ô','ç','à','ù',Chr(VK_BACK), Chr(VK_DELETE):
        ; // nothing
      else
        ...
      end;
    end;

  9. #29
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut


    Citation Envoyé par FChrisF Voir le message
    Je n'ai pas suivi toute la discussion (désolé)
    Il ne faut pas être désolé, ce n'est pas obligatoire. Le seul fait que tu t'y intéresses suffit largement .

    Citation Envoyé par FChrisF Voir le message
    mais si avez avez bien suivi la proposition initiale de Roland Chastain (i.e. changement d'encodage du/des fichiers .pas) et que vous renseignez le texte de certains de vos contrôles au niveau de votre programme (par exemple Label1.Caption:='Gîtes fermés'; ) vous aurez certainement des soucis.
    Sur ce point, les choses semblent (?) claires.
    Si j'attribue, dans l'inspecteur d'objet, une valeur (chaîne) à Label1.Caption, l'affichage rend parfaitement compte des caractères accentués.
    Dans le cas où je dois fixer cette valeur dynamiquement, je dois "transcoder" la chaîne pour prendre en compte les caractères accentués. J'utilise personnellement une écriture de la forme : ( je t'écoute jipété)
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.Caption:=ISO_8859_15ToUTF8('Gîtes fermés')
    qui est, je pense similaire à ta proposition :
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.caption := WinCPToUTF8('Gîtes fermés');
    mis à part le fait que l'une fonctionne sous GNU-Linux, et l'autre sous Windows. Du moins, je le suppose.

    Citation Envoyé par FChrisF Voir le message
    La bibliothèque graphique de Lazarus (LCL) utilise de l'UTF8 par défaut; vouloir la contrarier, c'est nécessairement aller au devant des problèmes (de mon point de vue).
    Mais je ne veux pas la contrarier, moi. Je veux travailler en UTF-8. Je n'ai simplement pas le mode d'emploi.

    Citation Envoyé par FChrisF Voir le message
    Donc, soit vous revenez à l'encodage UTF8 des fichiers .pas (et vous devez alors modifier votre code de départ qui pose problème), soit vous changez partout le texte de vos contrôles au niveau de vos fichiers .pas (déconseillé).
    Pas de soucis. Quelles sont les modifications à apporter pour aller dans ce sens? Je ne demande pas qu'on réécrive mon code (où serait le plaisir ) mais simplement qu'on me donne la marche à suivre.

    Citation Envoyé par FChrisF Voir le message
    Exemple pour un encodage Ansi (i.e. CP1252) des fichiers .pas (mais c'est pour Windows, je ne sais ce qu'il en est pour Linux);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses
       ..., LazUTF8, ...
     
    ...
     Label1.caption := WinCPToUTF8('Gîtes fermés');
    ...
    LazUTF8 est accepté à la compilation sous GNU-Linux (je viens de l'ajouter à la clause uses pour voir), mais je ne sais pas s'il est utile, dans la mesure où mon transcodage (qui n'est d'ailleurs pas le mien) fonctionne très bien sans.

    Citation Envoyé par FChrisF Voir le message
    De toute façon, si votre code de départ (i.e. " if not (Key in [' ','-','a'..'z','A'..'Z','é','è','ê','î','ï','ô','ç','à','ù',Chr(VK_BACK), Chr(VK_DELETE)])") est présent dans une fonction de type "OnKeyPress(Sender: TObject; var Key: char) ;", cela ne marchera pas (i.e. la valeur dans Key est incorrecte pour des caractères non ASCII; encore une fois la LCL utilise de l'UTF8).
    C'est du code que j'ai écrit sous Delphi 7, si ma mémoire est bonne (ou 5), et il fonctionne bien. Je ne connais pas son équivalent Lazarus. Toujours les problèmes liés à la déficience de l'aide et à la barrière des langues.

    Citation Envoyé par FChrisF Voir le message
    Utilisez plutôt une fonction de type "OnUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char) ;" et modifiez votre code pour tester les valeurs de UTF8Key.
    Et voilà, à priori la solution. Est-ce qu'il suffit de remplacer :
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    if not (Key in [' ','-','a'..'z','A'..'Z','é','è','ê','î','ï','ô','ç','à','ù',Chr(VK_BACK), Chr(VK_DELETE)])
    ...
    par
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    procedure Edit1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char );
    if not (UTF8Key in [' ','-','a'..'z','A'..'Z','é','è','ê','î','ï','ô','ç','à','ù',Chr(VK_BACK), Chr(VK_DELETE)])
    ...
    pour que ça fonctionne, ce qui simplifierait les modifications à apporter, ou bien faut-il obligatoirement utiliser une clause case comme tu le fais dans ton exemple?

    Amicalement,
    naute.

  10. #30
    Membre chevronné

    Homme Profil pro
    Autre
    Inscrit en
    Novembre 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Novembre 2015
    Messages : 145
    Par défaut
    Citation Envoyé par naute Voir le message
    [...]
    Et voilà, à priori la solution. Est-ce qu'il suffit de remplacer :
    [...]
    Oui, enfin il faut que la fonction soit associée à l'événement correspondant: ce n'est plus OnKeyPress mais OnUTF8KeyPress.

    Le plus simple est de laisser l'IDE faire le travail à votre place.

    Après avoir sélectionné votre champ "Edit", dans l'inspecteur d'objet sélectionnez l'onglet "Événement", et double-cliquez sur l'événement OnUTF8KeyPress. Vous pourrez alors ajouter du code dans la fonction correspondante depuis l'éditeur de code qui va s'ouvrir à la bonne place (et avec tout les déclarations déjà "préparées").

    Et pensez à supprimer votre fonction OnKeyPress, que vous n'utiliserez alors plus.


    Par ailleurs, l'opérande "in" ne fonctionnera en effet pas. Comme d'autres personnes vous l'ont indiqué dans ce sujet, elle ne fonctionne que pour les types ordinaux: et le type TUTF8Char n'en est pas un (c'est un type String[7]).

    Utilisez donc plutôt l'instruction "case of" comme dans mon exemple précédent; ou bien faites votre propre fonction, à base de "if" ou autre ...



    Tout ceci est bien sûr dans l'optique de l'abandon du codage en ANSI des unités ".pas", et du retour à l'UTF8 (en standard pour Lazarus et sa LCL): plus besoin de fonction(s) de conversion, dans ce cas.

  11. #31
    Membre émérite

    Homme Profil pro
    Rédacteur technique (retraité)
    Inscrit en
    Octobre 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique (retraité)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 168
    Par défaut ISO 8859-15 n'est PAS une page de code ANSI
    Citation Envoyé par naute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.Caption:=ISO_8859_15ToUTF8('Gîtes fermés')
    qui est, je pense similaire à ta proposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.caption := WinCPToUTF8('Gîtes fermés');
    Attention ces deux routines ne sont pas équivalentes : les pages de code ANSI (Windows) et 8859-15 (ISO) se ressemblent mais diffèrent sur l'encodage de quelques caractères, principalement « € », «Œ », « œ » et « Ÿ ».

    Par exemple le symbole Euro est codé $80 en ANSI et $A4 en ISO-8859-15

    La fonction WinCpToUtf8 convertit de ANSI, la page de code par défaut du système installé (CP1252 pour le français) vers UTF8.

  12. #32
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Citation Envoyé par FChrisF Voir le message
    Tout ceci est bien sûr dans l'optique de l'abandon du codage en ANSI des unités ".pas", et du retour à l'UTF8 (en standard pour Lazarus et sa LCL): plus besoin de fonction(s) de conversion, dans ce cas.
    Mais je n'ai pas cherché à coder mes unités en ANSI. Je ne m'étais d'ailleurs jamais préoccupé de ce problème. Delphi s'occupait de cela de façon transparente. Je n'ai aucune idée de la manière d'opter pour un codage ou un autre. J'imagine qu'il y a un paramétrage à faire dans l'EDI ou quelque chose dans ce genre, parce que je ne vois nulle part dans mes unité une quelconque référence à un système d'encodage.

    Citation Envoyé par DomDA91
    La fonction WinCpToUtf8 convertit de ANSI, la page de code par défaut du système installé (CP1252 pour le français) vers UTF8.
    Oui mais d'abord, est-ce que la fonction WinCpToUtf8 fonctionne sous GNU-Linux. Le préfixe Win me fait, à tort peut-être, douter.
    De plus, si je peux nativement travailler en UTF-8 avec Lazarus, comme le conseille FChrisF, le problème de la fonction de transcodage à utiliser ne se pose plus.

  13. #33
    Membre chevronné

    Homme Profil pro
    Autre
    Inscrit en
    Novembre 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Novembre 2015
    Messages : 145
    Par défaut
    Citation Envoyé par naute Voir le message
    Mais je n'ai pas cherché à coder mes unités en ANSI.
    [...]
    Ce n'est pas ce que laissais supposer vos premiers échanges avec Roland Chastain au début de ce sujet. Je pensais que vous aviez réalisé la manip qu'il vous avait proposée: clic droit -> paramètres du fichier -> encodage -> ansi(cp1252).

    Mais j'ai peut-être mal compris. Ceci étant, je ne vois pas trop comment vous avez pu compiler votre code (i.e. la ligne de code indiquée dans votre premier post de ce sujet) dans ce cas ...

  14. #34
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Ça y-est : je commence à comprendre... Vieux motard que jamais. Le problème, c'est que je comprend vite mais il faut m'expliquer longtemps. Mes "connaissances", si je puis dire, en programmation sont totalement empiriques et ont évolué, également si je puis dire, au petit bonheur la chance, sans aucune base théorique. Alors, évidemment, il y a des manques .

    Je pense que Roland m'a fait faire cette manip uniquement pour résoudre mon problème ponctuel, sans avoir à retoucher mon code. Donc, si je refais cette manip en sélectionnant UTF-8, sans faire les modifications que vous me proposez, je vais retrouver la même erreur de compilation. J'en ai pour 30 secondes...

    Effectivement, je retrouve la même erreur. Bon, j'aurais au moins compris une partie du mécanisme. Je vais donc modifier le code en conséquence pour pouvoir rester en UTF-8..

    Merci .

    Amicalement,
    naute.

  15. #35
    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 naute Voir le message
    Oui, ou tout réécrire . On va essayer d'éviter ça.

    Juste pour te donner un aperçu:

    Nom : manifest_3.png
Affichages : 474
Taille : 16,0 Ko

    Le canva tout noir et l'affichage aléatoire des caractères accentués (et l'€uro). Et ce ne sont que des TLabel officiels. Enfin bon !

    Pour les caractères, je vais utiliser
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    chaineUTF8:=ISO_8859_15ToUTF8(chaine);

    Comment affiches tu ton image ?

    Si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Canvas.Lock;
    Canvas.StretchDraw(ClientRect,BitmapA); // ou canvas.Draw(0,0,BitmapA)
    Canvas.UnLock;
    Sous Linux ça fonctionne uniquement si :

    BitmapA.PixelFormat := pf24bit; si tu utilises pf32bit bizarrement rien ne s'affiche, c'est un bug de la LCL le pixel format est mal gérer.

    S ton image de base est en 32bits, pour corriger tu peux tester ça
    J'utilise une version un peu différente pour mon projet et ça marche correctement pour mes images en 32bits qui ne sont pas des "TBitmap" pour infos. Par contre je n'ai pas testé avec un TBitmap directement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Function CorrectBitmap(ABitmap: Graphics.TBitmap):: Graphics.TBitmap;
    var
      Temp:     Graphics.TBitmap;
      RawImage: TRawImage;
      BitmapHandle, MaskHandle: HBitmap;
      W,H : Integer;
      Buffer : PByte;
    Begin
      result := nil;
      BitmapHandle := 0;
      MaskHandle := 0;
      w := ABitmap.Width;
      h:=ABitmap.Height;
      Buffer :=ABitmap.RawImage.Data; // ou ABitmap.RawImage.GetLineStart(0);
     
      RawImage.Init;
      RawImage.Description.Init_BPP32_R8G8B8A8_BIO_TTB(W,H);
      RawImage.Data := Buffer;
      RawImage.DataSize:= ABitmap.RawImage.DataSize;
     
      if not RawImage_CreateBitmaps(RawImage, BitmapHandle, MaskHandle, False) then
      begin
        raise FPImageException.Create('Failed to create bitmap handle');
      end
      else
      begin
       Temp := Graphics.TBitmap.Create;
       Temp.Handle := BitmapHandle;
       Temp.MaskHandle := MaskHandle;
       Result := Temp;
      end;
     
      if (Result=nil) then Raise Exception.Create('Erreur de conversion vers TBitmap');
    End;    
     
    BitmapB := CorrectBitmap(BitmapA);
    Canvas.Lock;
    Canvas.StretchDraw(ClientRect,BitmapB); 
    Canvas.UnLock;
    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

  16. #36
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Bonjour BeanzMaster .

    Citation Envoyé par BeanzMaster Voir le message
    Comment affiches tu ton image ?
    Je n'affiche pas d'image, je la dessine.

    Une fiche toute bête avec 2 TImage(s) (en réalité, un seul aurait suffit).
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
     
    unit base;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
     Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
     
    type
     
     { TFBase }
     
     TFBase = class(TForm)
      PlanningImg: TImage;
      TitreImg: TImage;
      procedure FormCreate(Sender: TObject);
     
     private
      const
        CoulFonte = clBlack;
        NbJours = 366;              // Nombre de jours à afficher sur le planning
        FdGite1 = $00DDDDFF;        // Couleurs des fonds gîtes libres
        FdGite2 = $00FFDDDD;
        FdGite3 = $00C8FFC8;
        DateOrg = 43229;             // 9 mai 2018
      var
        longueurPlanning: integer;
        fdTitre: TColor;
     
      procedure CentreTexte(Canneva: TCanvas; Texte: string; OrgX, OrgY, L, H: Integer);
      procedure DessineTitre;
      procedure DessinePlanning;
     public
     
     
     end;
     
    var
     FBase: TFBase;
     
    implementation
     
    {$R *.lfm}
     
    { TFBase }
     
    procedure TFBase.FormCreate(Sender: TObject);
    begin
      FBase.Width:=805;
      FBase.DoubleBuffered:=True;
      fdTitre := $00EEEEEE;
      DessineTitre;
      DessinePlanning;
    end;
     
     
     
    procedure TFBase.CentreTexte(Canneva: TCanvas; Texte: string;
      OrgX, OrgY, L, H: Integer);
    var
    X, Y: Integer;
    begin
      X := OrgX + (L - Canneva.TextWidth(Texte)) div 2;
      Y := OrgY + (H - Canneva.TextHeight(Texte)) div 2;
      Canneva.TextOut(X,Y,Texte);
    end;
     
    procedure TFbase.DessineTitre;
    begin
      with TitreImg do
      begin
        Left := 0;
        Top :=0;
        Width := 805;
        Height := 40;
        with Canvas do
        begin
          //Lignes verticales
          MoveTo(0,0);
          LineTo(0,40);
          MoveTo(201,0);
          LineTo(201,40);
          MoveTo(402,0);
          LineTo(402,40);
          MoveTo(603,0);
          LineTo(603,40);
          MoveTo(804,0);
          LineTo(804,40);
          //Lignes Horizontales
          MoveTo(0,0);
          LineTo(804,0);
          MoveTo(0,40);
          LineTo(804,40);
          //Ecriture du titre
          Brush.Color := fdTitre;
          Font.Size := 20;
          Brush.Color := $00EEEEEE;
          FloodFill(5,5,clBlack,fsBorder); //Fond de la bande de titre qui apparemment ne fonctionne pas
          Font.Color := $00000000;
          CentreTexte(TitreImg.Canvas,'DATE',0,0,200,40);
          FloodFill(205,5,clBlack,fsBorder);
          Font.Color := $000066CC;
          CentreTexte(TitreImg.Canvas,'GÎTE 1',201,0,200,40);
          Font.Color := $00FF0000;
          FloodFill(405,5,clBlack,fsBorder);
          CentreTexte(TitreImg.Canvas,'GÎTE 2',402,0,200,40);
          Font.Color := $0000AA00;
          FloodFill(605,5,clBlack,fsBorder);
          CentreTexte(TitreImg.Canvas,'GÎTE 3',603,0,200,40);
        end;
      end;
    end;
     
    procedure TFBase.DessinePlanning;
    var
    i: Integer;
    chaine: string;
    begin
      with PlanningImg do
      begin
        Left := 0;
        Top :=0;
        Width := 805;
        longueurPlanning := 40 + NbJours * 20;
        Height := longueurPlanning;
        with Canvas do
        begin
          // Lignes verticales
          MoveTo(0,0);
          LineTo(0,longueurPlanning);
          MoveTo(201,0);
          LineTo(201,longueurPlanning);
          MoveTo(402,0);
          LineTo(402,longueurPlanning);
          MoveTo(603,0);
          LineTo(603,longueurPlanning);
          MoveTo(804,0);
          LineTo(804,longueurPlanning);
          // Lignes horizontales supérieure et inférieure
          MoveTo(0,0);
          LineTo(804,0);
          MoveTo(0,longueurPlanning-1);
          LineTo(804,longueurPlanning-1);
          // Écriture du titre et coloration des colonnes
          Font.Size := 20;
          Brush.Color := fdTitre;
          FloodFill(5,5,clBlack,fsBorder);
          Font.Color := $00000000;
          CentreTexte(PlanningImg.Canvas,'DATE',0,0,200,40);
          Brush.Color := FdGite1;
          FloodFill(205,5,clBlack,fsBorder);
          Font.Color := $000000FF;
          CentreTexte(PlanningImg.Canvas,'GÎTE 1',201,0,200,40);
          Brush.Color := FdGite2;
          Font.Color := $00FF0000;
          FloodFill(405,5,clBlack,fsBorder);
          CentreTexte(PlanningImg.Canvas,'GÎTE 2',402,0,200,40);
          Brush.Color := FdGite3;
          Font.Color := $0000AA00;
          FloodFill(605,5,clBlack,fsBorder);
          CentreTexte(PlanningImg.Canvas,'GÎTE 3',603,0,200,40);
          // Ligne horizontale de fermeture du titre (après coloration des colonnes)
          MoveTo(0,40);
          LineTo(804,40);
          // Écriture des dates
          for i := 0 to (Trunc(Now)-DateOrg)+366 do
          begin
            Brush.Color := FdTitre;
            Font.Size := 10;
            Font.Color := CoulFonte;
            MoveTo(0,(i+1)*20+40);
            LineTo(804,(i+1)*20+40);
            DateTimeToString(Chaine,'dddd d mmmm yyyy',DateOrg + i);
            CentreTexte(PlanningImg.Canvas,Chaine,0,i*20+40,200,20);
          end;
        end;
      end;
    end;
     
    end.

    Résultat sous Debian 9.3 / Bureau Mate 1.6.2 / Lazarus 1.8.2 (uniquement le dessin du planning)

    Nom : planning1.png
Affichages : 308
Taille : 50,1 Ko
    C'est pas beau hein?! et les dates ne sont même pas en français mais ça doit venir d'autre chose.

    Aspect du planning sous Windows 7 / Delphi 2006 (simulation avec 5 locations)

    Nom : planning2.PNG
Affichages : 296
Taille : 72,8 Ko
    Ce n'est peut-être pas beau non plus mais c'est utilisable .
    Si jipété passe par là, il verra que j'ai suivi ses conseils .

    Si tu as une idée, je suis preneur ,

    amicalement,
    naute.

  17. #37
    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 naute Voir le message
    Bonjour BeanzMaster .


    Je n'affiche pas d'image, je la dessine.

    Une fiche toute bête avec 2 TImage(s) (en réalité, un seul aurait suffit).

    ....
    Ce n'est peut-être pas beau non plus mais c'est utilisable .
    Si jipété passe par là, il verra que j'ai suivi ses conseils .

    Si tu as une idée, je suis preneur ,

    amicalement,
    naute.
    Salut il y a des incohérences dans ton code :
    1. Places dans l'évènement OnShow de ta form le OnCreate
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      Procedure TFBase.FormShow(Sender : TObject);
      Begin
        DoubleBuffered:=True;
        Width:=805;
        fdTitre := $00EEEEEE;
        DessineTitre;
      //  DessinePlanning;
      end;
    2. Il faut que tu définisses la couleur et le style du crayon (Pen) pour afficher tes lignes
    3. Tu n'es pas obligé d'utiliser floodfill pour chaque cellule si la couleur du fond est la même partout. De plus il faut utilisé le paramètre fsSurface. Sinon utilises la procedure FillRect à la place, vu que tu connais les dimensions de tes cellules.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    procedure TFbase.DessineTitre;
    begin
      with TitreImg do
      begin
        Left := 0;
        Top :=0;
        Width := 805;
        Height := 40;
        with Canvas do
        begin
          Brush.Color := fdTitre;
          Brush.Style := bsSolid;
          // Remplissage du fond
          FillRect(0,0,width,height);
          //Bordures latérales
          Pen.Color := clWhite;
          Pen.Style := psSolid;
          Rectangle(0,0,width,height);
          //Lignes verticales
          MoveTo(201,0);
          LineTo(201,40);
          MoveTo(402,0);
          LineTo(402,40);
          MoveTo(603,0);
          LineTo(603,40);
          //Ecriture du titre
          Font.Size := 20;
          Brush.Color := clRed;
          FloodFill(5,5,clBlack,fsSurface); 
          Font.Color := clBlack;
          CentreTexte(TitreImg.Canvas,'DATE',0,0,200,40);
          Brush.Color := clYellow;
          FloodFill(205,5,clBlack,fsSurface);
          Font.Color := $0066CC;
          CentreTexte(TitreImg.Canvas,'GÎTE 1',201,0,200,40);
          Font.Color := $FF0000;
          Brush.Color := clGreen;
          FloodFill(405,5,clBlack,fsSurface);
          CentreTexte(TitreImg.Canvas,'GÎTE 2',402,0,200,40);
          Font.Color := $00AA00;
          Brush.Color := clBlue;
          FloodFill(605,5,clBlack,fsSurface);
          CentreTexte(TitreImg.Canvas,'GÎTE 3',603,0,200,40);
        end;
      end;
    end;
    Affichage avec FloodFill Nom : 2018-05-09_150659.jpg
Affichages : 271
Taille : 11,1 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    procedure TFbase.DessineTitre;
    begin
      with TitreImg do
      begin
        Left := 0;
        Top :=0;
        Width := 805;
        Height := 40;
        with Canvas do
        begin
          Brush.Color := fdTitre;
          Brush.Style := bsSolid;
          // Remplissage du fond
          FillRect(0,0,width,height);
          //Bordures latérales
          Pen.Color := clBlack;
          Pen.Style := psSolid;
          Rectangle(0,0,width,height);
          //Lignes verticales
          MoveTo(201,0);
          LineTo(201,40);
          MoveTo(402,0);
          LineTo(402,40);
          MoveTo(603,0);
          LineTo(603,40);
          //Ecriture des titres
          Font.Size := 20;
     
          Font.Color := clBlack;
          //Brush.Color := clRed;
          //FloodFill(5,5,clBlack,fsSurface); //Fond de la bande de titre qui apparemment ne fonctionne pas
          CentreTexte(TitreImg.Canvas,'DATE',0,0,200,40);
     
          Font.Color := $0066CC;
          //Brush.Color := clYellow;
          //FloodFill(205,5,clBlack,fsSurface);
          CentreTexte(TitreImg.Canvas,'GÎTE 1',201,0,200,40);
     
          Font.Color := $FF0000;
          //Brush.Color := clGreen;
          //FloodFill(405,5,clBlack,fsSurface);
          CentreTexte(TitreImg.Canvas,'GÎTE 2',402,0,200,40);
     
          Font.Color := $00AA00;
          //Brush.Color := clBlue;
          //FloodFill(605,5,clBlack,fsSurface);
          CentreTexte(TitreImg.Canvas,'GÎTE 3',603,0,200,40);
        end;
      end;
    end;
    Affichage sans floodfill : Nom : 2018-05-09_151503.jpg
Affichages : 278
Taille : 11,8 Ko

    En espérant que cela t'aide un peu

    EDIT : Pour les date en Anglais au lieu du français cela provient de la configuration de L'OS (les paramètres locaux sous Linux n'ont pas l'air d'être pris en charge ). Pour avoir les dates en français il faut définir une variable TFormatSettings. Puis redéfinir les propriétés par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ShortMonthNames: ('Jan','Feb','Mar','Apr','May','Jun', 'Jul','Aug','Sep','Oct','Nov','Dec');
    LongMonthNames: ('January','February','March','April','May','June', 'July','August','September','October','November','December');
    ShortDayNames: ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
    LongDayNames:  ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    et enfin utiliser la fonction function FormatDateTime(const FormatStr: string; DateTime: TDateTime; const FormatSettings: TFormatSettings; Options : TFormatDateTimeOptions = []): string; pour convertir ton TDateTime

    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

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 154
    Par défaut
    Citation Envoyé par naute Voir le message
    Si jipété passe par là, il verra que j'ai suivi ses conseils .
    Il est passé par ici, il repassera par là (sur un air connu, )

    Et il a remarqué que le "au :" a conservé son soulignement, et que ton "Week End" est faux : c'est soit Week-end soit Weekend (nouvelle orthographe de 1990 [omg, bientôt 30 ans !])

  19. #39
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    En espérant que cela t'aide un peu
    Bien sûr que ça m'aide, ne serait-ce que psychologiquement ,mais pas que... .

    Citation Envoyé par BeanzMaster Voir le message
    Salut il y a des incohérences dans ton code :
    Là, si tu croyais m'étonner, c'est loupé .

    Citation Envoyé par BeanzMaster Voir le message
    Places dans l'évènement OnShow de ta form le OnCreate
    Daccord mais pourquoi? Quelle différence cela fait-il?

    Citation Envoyé par BeanzMaster Voir le message
    Il faut que tu définisses la couleur et le style du crayon (Pen) pour afficher tes lignes
    Pas de problème mais est-ce que les valeurs ne sont pas déjà clBlack et psSolid par défaut?

    Citation Envoyé par BeanzMaster Voir le message
    Tu n'es pas obligé d'utiliser floodfill pour chaque cellule si la couleur du fond est la même partout. De plus il faut utilisé le paramètre fsSurface. Sinon utilises la procedure FillRect à la place, vu que tu connais les dimensions de tes cellules.
    Dans ce cas précis, je suis d'accord que FillRect() fait aussi bien le travail, mais indépendamment de ça, FloodFill() devrait fonctionner aussi. En tout cas, il fonctionne parfaitement avec le code que j'ai donné sous Windows/Delphi 2006. De plus, mon utilisation de fsBorder est conforme avec le fait que la couleur que je donne est bien celle de la limite du remplissage. Si j'utilise fsSurface, ce qui est également possible, il faut que je donne la couleur de remplissage actuelle.

    Si tu veux, ce qui m'embête le plus, c'est que ça fonctionne dans un environnement et pas dans l'autre. Je viens de faire plusieurs tests en changeant les couleurs de fond, de ligne et de remplissage, et rien à faire.
    Je suis retourné voir le mode d'emploi de FloodFill() dans Delphi 2006 (parce que dans Lazarus, les modes d'emploi ), et je n'ai rien trouvé d'aberrant dans mon utilisation.

    Tes exemples de code fonctionnent parfaitement .

    Citation Envoyé par BeanzMaster Voir le message
    Pour les date en Anglais au lieu du français cela provient de la configuration de L'OS (les paramètres locaux sous Linux n'ont pas l'air d'être pris en charge ). Pour avoir les dates en français il faut définir une variable TFormatSettings. Puis redéfinir les propriétés par défaut :
    .../...
    Je suis allé voir dans ma config et tout semble OK .

    Amicalement,
    naute.

  20. #40
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Il est passé par ici, il repassera par là (sur un air connu, )

    Et il a remarqué que le "au :" a conservé son soulignement, et que ton "Week End" est faux : c'est soit Week-end soit Weekend (nouvelle orthographe de 1990 [omg, bientôt 30 ans !])
    Je savais bien que tu repérerais le au: qui n'a pas seulement conservé son soulignement, mais également le mauvais espacement concernant le caractère :. J'ai eu la flemme de retourner sur l'autre ordi pour remédier à cela.

    Pour le Week end, tu as raison, bien sûr, mais de la même manière que je suis certain que tu n'es pas d'accord avec toutes les modifications entérinées dans la modification de l’orthographe, je suis également certain (enfin presque) que tu m'accorderas le droit de refuser de m'adapter. Je sais bien qu'être intelligent, c'est s'adapter et qu'il n'y a que les imbéciles qui n'évoluent pas, mais je prends le risque. Il est vrai que modifier l'orthographe (et la grammaire et la sémantique et la rhétorique et que sais-je...) pour l'adapter aux carences constatées dans son enseignement est la solution de facilité. Mais le cheminement conduisant à un appauvrissement, sous le prétexte fallacieux de simplification, ne me semble pas très porteur.

    Mais bon! Vaste débat...

    Et je mettrai toujours un s à la deuxième personne du singulier de l'impératif (sauf quand j'oublie), bien que ce soit une fote d'ortografe parce que cette exception est absurde. C'est le seul cas, sauf erreur (et si c'est une erreur, je sais que tu vas la trouver), où un verbe ne se termine pas par un s à la deuxième personne du singulier. Le faisant en connaissance de cause, ce n'est plus une faute d'orthographe, c'est de la rébellion . Il y a des règles à modifier voire à supprimer, mais qui est juge? Sûrement pas moi, c'est évident. C'est l'usage qui détermine les changements, et l'académie française, dans son immense sagesse (ou en raison de sa moyenne d'age ), prend tout son temps. Inutile d'entériner un mot ou une expression qui aura disparu dans 5 ou 10 ans. Par contre, les dictionnaires d'usage courant ont toute (ou presque) latitude pour intégrer un mot à la mode. Donc, prudence. Un mot présent dans un dictionnaire ne signifie pas qu'il est français, de même qu'à l'inverse, son absence du dictionnaire n'implique pas qu'il ne le soit pas.

    Mais qu'est-ce que je raconte, moi : Ce n'est pas le sujet . C'est la faute à jipété .

    Amicalement,
    naute.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [Lazarus] Migration de Delphi vers Lazarus
    Par PhilLU dans le forum Lazarus
    Réponses: 4
    Dernier message: 18/01/2017, 13h00
  2. Réponses: 1
    Dernier message: 28/08/2013, 16h06
  3. [Lazarus] Transfert de composant de Delphi vers Lazarus
    Par Nandjm dans le forum Lazarus
    Réponses: 3
    Dernier message: 20/07/2011, 10h17
  4. [Lazarus] Portage d'un composant graphique Delphi vers Lazarus
    Par thierryc dans le forum Lazarus
    Réponses: 1
    Dernier message: 24/10/2009, 12h05

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