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 :

La procédure UTF8Insert() de l'unité LazUTF8 semble ne pas fonctionner [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    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
    Points : 2 790
    Points
    2 790
    Par défaut La procédure UTF8Insert() de l'unité LazUTF8 semble ne pas fonctionner
    Bonjour .

    En suivant les conseils reçus dans un récent topic, qui m'encourageaient à migrer vers l'UTF-8, j'ai constaté un petit problème lors de l'utilisation de la procedure
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure UTF8Insert(const source: UTF8String; var s: UTF8string;
      StartCharIndex: PtrInt);
    var
      StartBytePos: PChar;
    begin
      StartBytePos:=UTF8CharStart(PChar(s),length(s),StartCharIndex-1);
      if StartBytePos <> nil then
        Insert(source, s, StartBytePos-PChar(s)+1);
    end;
    de l'unité LazUTF8. Apparemment, elle ne fonctionne pas.

    J'ai fait un petit test avec les procédures insert et delete de cette unité, et delete fonctionne bien quant à lui.

    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
     
    procedure TFBase.BtnInsererClick(Sender: TObject);
    var
      chaine1, chaine2: UTF8String;
    begin
      chaine1:=LEInitial.Caption;
      chaine2:=LEInsert.Caption;
      UTF8Insert(chaine1, chaine2, SEPosition.Value);
      STResultat.Caption:=chaine1;
    end;
     
    procedure TFBase.BtnOterClick(Sender: TObject);
    var
      chaine: UTF8String;
    begin
      chaine:=LEInitial.Caption;
      UTF8Delete(chaine, SEPosition.Value, SELongueur.Value);
      STResultat.Caption:=chaine;
    end;

    Nom : utf8_1.png
Affichages : 298
Taille : 12,2 Ko

    Est-ce la procédure qui pose problème ou mon code?

    Merci pour vos avis,

    amicalement,
    naute.

  2. #2
    Membre éclairé

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

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 168
    Points : 807
    Points
    807
    Par défaut
    Bonjour, dans
    Citation Envoyé par naute Voir le message
    Bonjour .
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    UTF8Insert(chaine1, chaine2, SEPosition.Value)
    J'ai l'impression que tu a interverti les 2 premiers paramètres :
    Le premier, const, devrait être la chaîne à insérer et le second, var, la chaine initiale puis au retour la chaîne résultante.

    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    UTF8Insert(chaine2, chaine1, SEPosition.Value)

  3. #3
    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
    Points : 2 790
    Points
    2 790
    Par défaut
    Bonjour DomDa91 .

    Tout à fait exact .
    C'est bizarre, mais dans ma mémoire, dans les routines de traitement de chaîne sous Delphi, la chaîne sur laquelle on travaillait était référencée en premier, ce qui me semblait logique, et je ne me suis même pas posé la question.
    Je dois me tromper.

    Merci beaucoup!

    Amicalement,
    naute.

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

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

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut si jamais pour ta gestion des string en UTF8 si tu veux te simplifier la vie, tu peux tester mon unité que j'ai posté ici. Il y a encore 2 ou 3 choses que j'aimerais vérifié encore sur les chaines de caractères mais elle parfaitement fonctionnelle en l'état et je n'ai pas encore eu de problèmes avec.


    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. removeEventListener semble ne pas fonctionner.
    Par sacapuss2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/07/2011, 18h56
  2. [Security] [Spring-Flex][ACEGI] Semble ne pas fonctionner
    Par arnaud.tlse dans le forum Spring
    Réponses: 0
    Dernier message: 05/08/2010, 16h04
  3. [Thread] interrupt qui semble ne pas fonctionner
    Par Balbuzard dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 05/09/2008, 11h17
  4. clear:both semble ne pas fonctionner
    Par Bayard dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/10/2007, 12h14
  5. [firePropertyChange] semble ne pas fonctionner ?
    Par jcodeunpeu dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 19/12/2005, 14h37

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