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

 Delphi Discussion :

Affichage d'un caractère indésirable


Sujet :

Delphi

  1. #1
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut Affichage d'un caractère indésirable
    Bonjour,

    J'ai besoin d'afficher l'écriture d'un nombre entier en notation scientifique : Par exemple:
    La notation scientifique comprend 5 zones :

    |Signe|1 chiffre|Séparateur|EE|Signe+Exposant|
    Exemple de conversion:
    -128 => -1.28EE+2
    -32522 => -3.2522EE+4
    354555645 => 3.54555645EE+8

    Les nombres positifs sont convertis correctement mais sur les nombres négatifs, j'ai un signe "-" qui apparait en fin de chaîne sans raison apparente.
    -128 affiche -1.28EE+2-
    Avec un Showmessage, l'erreur n'apparait plus... Est-ce un problème d'initialisation de chaine? je vois pas ce qui cloche...

    Voici mon code pas fini et optimisé :

    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
     
    function TForm1.fInttoP10Str(n: LongInt): String;
      const  cr = #13#10;
      var LMantisse : integer;
    begin
      if Pos('-',result) = 1 then
      begin
        LMantisse := Length(result)-1;
        showmessage(Copy(result,1,2)+cr+'.' + Copy(result,3,LMantisse-1)+cr+'EE+'+cr+Inttostr(Length(result)-2));
        Result := Copy(result,1,2)+ '.' + Copy(result,3,LMantisse-1)+'EE+'+Inttostr(Length(result)-2);
      end else
      begin
        LMantisse := Length(result);
        Result := Copy(result,1,1)+ '.' + Copy(result,2,LMantisse-1)+'EE+'+Inttostr(LMantisse-1);
      end;
    merci pour vos éclairages
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Comment peux tu avoir le result de ta fonction dans la première ligne du code?
    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
     
    function TForm1.fInttoP10Str(n: LongInt): String;
      const  cr = #13#10;
      var LMantisse : integer;
    begin
      if Pos('-',result) = 1 then
      begin
        LMantisse := Length(result)-1;
        showmessage(Copy(result,1,2)+cr+'.' + Copy(result,3,LMantisse-1)+cr+'EE+'+cr+Inttostr(Length(result)-2));
        Result := Copy(result,1,2)+ '.' + Copy(result,3,LMantisse-1)+'EE+'+Inttostr(Length(result)-2);
      end else
      begin
        LMantisse := Length(result);
        Result := Copy(result,1,1)+ '.' + Copy(result,2,LMantisse-1)+'EE+'+Inttostr(LMantisse-1);
      end;

  3. #3
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    Exact Sgmsg,

    C'est une erreur de recopie,
    j'affecte dès ma première ligne n à result:

    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
    function TForm1.fInttoP10Str(n: LongInt): String;
      const  cr = #13#10;
      var LMantisse : integer;
    begin
      result := n; // on garde la notation d''origine par défaut  
      if Pos('-',result) = 1 then
      begin
        LMantisse := Length(result)-1;
        showmessage(Copy(result,1,2)+cr+'.' + Copy(result,3,LMantisse-1)+cr+'EE+'+cr+Inttostr(Length(result)-2));
        Result := Copy(result,1,2)+ '.' + Copy(result,3,LMantisse-1)+'EE+'+Inttostr(Length(result)-2);
      end else
      begin
        LMantisse := Length(result);
        Result := Copy(result,1,1)+ '.' + Copy(result,2,LMantisse-1)+'EE+'+Inttostr(LMantisse-1);
      end;
    Le problème existe, j'ai un signe "-" qui apparait alors que par le showmessage, il n'y en a pas...
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser FloatToStrF ?

    Quitte, si le EE est absolument nécessaire passer par un StringReplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    s:=FloatToStrF(Numberbox1.value, ffExponent, 8, 1);
    S:=StringReplace(s,'E','EE',[]);
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s:=FloatToStrF(Numberbox1.value, ffExponent, 8, 1);
    Bonjour Sergio

    Ben je crois que j'avais essayé, mais je pars d'un Nombre entier. Il me faut donc la longueur de l'entier, c'est pour ça qu'il me paraissait plus simple de passer par une conversion au départ avec nstr (entier en chaine) := inttostr(n); (n = entier).

    Je réessaye par exemple, si je prends la valeur minimale d'un Int64 = -9223372036854775807; // INT64 => -9223372036854775807..9223372036854775807
    Je suis obligé de passer par la partie basse de l'int64 et je bouffe des décimales:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    showmessage(FloatToStrF(Low(Int64), ffExponent, 18, 1));
    j'obtiens :

    Nom : Msg1.jpg
Affichages : 209
Taille : 12,0 Ko
    Je perds certaines décimales
    Il me faillait donc définir les différentes zones du nombre en partant d'un entier au départ. Je devrai obtenir le le Int dans sa valeur minimale:

    -9.223372036854775807EE+18
    Merci
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Alors quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     function exponential(const n : int64) : String;
     var s : string;
         e : word;
     begin
      s:=format('%d',[n]);
      if n<0 then e:=2 else e:=1;
      result:=ifthen(n>=0,Copy(n.ToString,1,e),Copy(n.ToString,1,e))
                +','
                + Copy(n.ToString,e+1)
                +'EE+'
                +(length(s)-e).ToString;
     end;
    valeur -9223372036854775808
    ma fonction -9,223372036854775808EE+18
    FloatToStrf -9,22337203685477581E+18
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    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
    var
     S:string;
     L:integer;
     M:Int64;
    begin
     
       M:= 100;
       S:=Inttostr(M);
       L:=Length(S);
       if M= 0 then
          S:='0'
       else if  M < 0 then
       begin
          Insert('.',S,3);
          S:=S+'E+'+Inttostr(L-1);
       end else
       begin
          Insert('.',S,2);
          S:=S+'E+'+Inttostr(L);
       end;
     
      Showmessage(S);

  8. #8
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    Merci Wheel et Sergio,

    Vos solutions fonctionnent. Pour Wheel, il faut rectifier la ligne en retirant 1 à L dans les deux cas de valeurs positives ou négatives.

    y'a plus qu'à choisir...
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  9. #9
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut N'est plus résolu
    Re

    Désolé, le problème de départ n'est pas là où nous pensions. Mais vos exemples m'ont quand même aidé parce effectivement, j'avais ce souci de voir apparaitre toutes les décimales en convertissant un entier en notation scientifique.

    Il faut reprendre mon premier message où je disais :

    Les nombres positifs sont convertis correctement mais sur les nombres négatifs, j'ai un signe "-" qui apparait en fin de chaîne sans raison apparente.
    -128 affiche -1.28EE+2-
    Avec un Showmessage, l'erreur n'apparait plus... Est-ce un problème d'initialisation de chaine? je vois pas ce qui cloche...
    Que je prenne vos fonctions ou les miennes, le résultat s'affiche correctement dans un showmessage, mais pas dans un memo dont le bidimode est bdRightToLeft. Voici l'affichage obtenu dans une simulation sur tous les types depuis le Byte jusqu'au Longword et int64:

    Nom : Msg2.jpg
Affichages : 188
Taille : 39,8 Ko

    Les nombre affichés dans le mémo sont initialisés dans la simulation dans l'ordre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      n1 := 225;  // Byte
      n2 := -128; //  ShortInt
      n3 := -25600; // SmallInt
      n4 := 65535; // Word 0..65535
      n5 := 299792458; // LongInt vitesse de la lumière
      n6 := -2147483648; // Min de integer
      n7 := 4294967295; // 0..Max d'un LongWord
      n8 := 18446744073709551615; // 0..Max du QWord 0..18446744073709551615
      n9 := -9223372036854775807; // INT64 => -9223372036854775807..9223372036854775807
    Vous remarquerez que tous les nombres positifs sont corrects mais pas les nombres négatifs dont le "-" je ne sais pour quelle raison se met à la fon au lieu du début
    no comprendo
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Jlmat Voir le message
    no comprendo
    se dice "no entiendo"
    "Non intellego quid" si c'est que tu y perds ton latin

    Alors, comme j'ai fait le test en FMX et que dans le projet j'utilisais SKIA justement pour écrire de l'arabe, je pense que je peux répondre en deux images
    pour le memo, j'utilise un TTextAlign.Leading, donc pas de souci
    Nom : Capture.PNG
Affichages : 201
Taille : 7,2 Ko

    Passage en mode RTL (grâce à un autre bouton BiDiMode := TBiDiMode.bdRightToLeft;)
    Nom : Capture_1.PNG
Affichages : 193
Taille : 7,2 Ko
    Regarde ce que donne la partie "Skia", le moins est à droite !
    Cela étant, il m'est facile de faire en sorte d'aligner le SKLabel sans pour autant passer en RTL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SkLabel2.Text:='';
    SkLabel2.Words.Add(low(int64).ToString+linefeed);
    SkLabel2.Words.Add(exponential(Low(int64))+linefeed);
    SkLabel2.Words.Add(FloatToStrF(Low(Int64), ffExponent, 18, 1));
    skLabel2.TextSettings.HorzAlign:=TSkTextHorzAlign.Trailing;
    Conclusion : La faute du mode RTL ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    C'est donc l'affichage qui pêche, et non la chaîne... encore que !
    Citation Envoyé par https://stackoverflow.com/questions/33506701/how-to-display-minus-on-the-left-delphi-tlistview
    The rules for parsing LTR and RTL text in various contexts are extensive and complex.
    S'ensuivent une explication et des solutions
    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 !

  12. #12
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    Merci Sergio et Tourlourou,

    Conclusion : La faute du mode RTL ?
    Je soupçonne en effet, je vais essayer d'éclaircir la chose avec mes collègues de Lazarus.
    J'ai mis le post en Delphi parce que pensais que c'était une mauvaise connaissance de Format, mais avec la version 2.08 de Lazarus, même si elle est multiplateforme, elle n'intègre pas FMX, du moins je ne crois pas...
    Je reviens ici si j'ai trouvé quelque chose...

    Je vais regarderais ton Lien Tourlourou

    A+
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  13. #13
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    Donc ..ca n'a rien a voir avec l’opération de conversion vous avez un problème lié au changement de direction du texte suivant le bidimode même si vous tapez un simple -1234 vous aurez le même affichage .. le caractère "-" est neutre suive la direction par défaut utilisée pour afficher le texte .

    La chaine devrait commencer par un caractère LTR ... si tu fais par exemple : m -1234 l'affichage sera correcte .. dans ce cas il faut placer au début de la chaine le caractère invisible dédié LRM $200E (pour empêcher le changement automatique de direction pour le "-" )

    à la fin du code ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Result :=  #$200E+Result

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bon effectivement Lazarus c'est plutôt VCL et pas du tout FMX, il eût fallu le préciser. Tout comme ce RTL qui arrive comme un cheveu sur la soupe.

    Mais cela ne devrait rien changer

    A priori, ma connaissance des langues RTL se limite à quelques mots et pas à l'écriture, pour les nombres négatifs le signe est bien placé devant (c'est-à-dire à droite)
    pour s'en convaincre, il suffit d'utiliser un utilitaire de traduction en ligne


    La question que je me pose est pourquoi le RTL pour le mémo ?
    A moins qu'il y ait aussi de l'arabe (et là, je viens de me faire confirmer que le signe était bien à droite en arabe "classique")
    pourquoi ne pas avoir utilisé la propriété Alignment du Tmemo (valable en VCL et aussi en Lazarus)
    Nom : Capture.PNG
Affichages : 177
Taille : 10,8 Ko
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  15. #15
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    Gagné Wheel!

    En effet, j'ai beau changer les alignements et bidimode, ça ne change rien. En ajoutant ton code devant la chaine à afficher ça marche
    Désolé de vous avoir fait cogité inutilement...
    Enfin pas tout à fait

    Wheel a écrit :
    Donc ..ca n'a rien a voir avec l’opération de conversion vous avez un problème lié au changement de direction du texte suivant le bidimode même si vous tapez un simple -1234 vous aurez le même affichage .. le caractère "-" est neutre suive la direction par défaut utilisée pour afficher le texte .
    La chaine devrait commencer par un caractère LTR ... si tu fais par exemple : m -1234 l'affichage sera correcte .. dans ce cas il faut placer au début de la chaine le caractère invisible dédié LRM $200E (pour empêcher le changement automatique de direction pour le "-" )
    à la fin du code ajouter Result := #$200E+Result
    En effet, j'ai beau changer les alignements et bidimode, ça ne change rien. En ajoutant ton code devant la chaine à afficher ça marche
    Est-ce que ça marche chez toi Sergio?
    Résolu
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  16. #16
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Jlmat Voir le message
    Est-ce que ça marche chez toi Sergio?
    Ben oui, mais tu n'as pas répondu à la question : pourquoi le RTL pour le mémo ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  17. #17
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    @ Sergio

    pourquoi le RTL pour le mémo ?
    Ben, je ne suis pas un expert, mais il me semble que c'est par défaut que la RTL (Run du Free Pascal) est je crois dans la FPC (Free Pascal 3.2.2) de Lazarus pour rester compatible à la fois à Delphi et à Free Pascal et Lazarus! C'est toi qui m'a suggéré que peut-être la RTL était en question...

    Je n'ai rien fait de spécial sur le mémo, les fonctionnalités et options sont celles par défaut, sauf que j'ai eu un souci dans l'affichage et j'ai cru au départ que je me plantais dans les conversions. Mais quand j'affichai avec Showmessage, l'affichage des résultats était correcte, c'est donc bien un problème d'affichage dans le mémo. Wheel a mis le doigt dessus, il faut que je regarde ce point, si Wheel voulait bien nous donner une référence de doc qui explique ce code de direction!

    Par ailleurs, il y a encore quelques limitations mineures dans l'utilisation des contrôles comme sur Delphi, mais l'équipe qui travaille sur les nouvelles versions améliorent à chaque fois. Je fais remonter à l'équipe dédié sur le forum Lazarus quand je mets le doigt sur un problème identifié, là je n'ai pas encore tout compris...

    Si j'ai du nouveau, je vous le communique
    Bonne journée
    JJ
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  18. #18
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Je pense que tu confonds RTL pour Right To Left et RTL de RunTime Library.
    Je parlais de RightToLeft soit bidimode=bdRightToLeft et alignement à droite des lignes du tmemo.
    que tu as indiqué ici
    dans un memo dont le bidimode est bdRightToLeft.
    Or, à moins que tu n'utilises une langue s'écrivant de droite à gauche, ce n'est pas la bonne propriété à utiliser.
    Si c'est le cas, le - doit bien être placé à droite du nombre en écriture "classique"
    Si ce n'est pas le cas, il faut laisser bidimode par défaut, cad bdLeftToRight et utiliser l'option Alignment comme indiqué dans mon post #14
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  19. #19
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    SergioMaster

    A+

    Attendant la répondre à ce point :
    à moins que tu n'utilises une langue s'écrivant de droite à gauche

  20. #20
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    @ Sergio
    Je pense que tu confonds RTL pour Right To Left et RTL de RunTime Library.
    Ah! Autant pour moi, oui, j'ai aligné à droite pour une question de présentation sur ma fiche...

    @Wheel
    #$200E+Result
    Est-ce que tu as une référence pour cela, je n'ai jamais vu la doc la dessus! En tout cas ça marche!
    Je programme en Lazarus 3.2.2 sous windows 10 pro

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Affichage caractères indésirables
    Par Media20 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 27/09/2021, 19h11
  2. [Tableaux] comment virer des caractère indésirables?
    Par julien.63 dans le forum Langage
    Réponses: 3
    Dernier message: 20/07/2006, 21h25
  3. Caractère indésirable sur Excel
    Par greenweed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/12/2005, 08h29
  4. Affichage chaîne de caractère
    Par log2n dans le forum Assembleur
    Réponses: 1
    Dernier message: 25/10/2005, 22h41
  5. Réponses: 6
    Dernier message: 19/10/2004, 13h46

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