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 :

supprimer le dernier caractère d'une chaine


Sujet :

Delphi

  1. #1
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut supprimer le dernier caractère d'une chaine
    Bonjour

    Je cherche à supprimer le dernier caractère d'une chaine

    exemple

    test = 'toto,titi,tata,';

    je cherche à récupérer

    'toto,titi,tata'

    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Delete(Test, Length(Test), 1);

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ Andnotor, je n'ai pas compris ta façon de faire.

    Si tu pouvais m'expliquer.

    Merci,

    @+,

    Cincap

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Le premier caractère à effacer est le dernier de la chaîne, Son index est donc égal à la longeur de la chaîne, soit Length(Test).

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ Andnotor, "test" doit être integer alors j'essaye de le faire avec un Tedit et cela ne fonctionne pas.

    Je continue....

    @+,

    Cincap

  6. #6
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Jcpan Voir le message
    Bonjour

    Je cherche à supprimer le dernier caractère d'une chaine

    exemple

    test = 'toto,titi,tata,';

    je cherche à récupérer

    'toto,titi,tata'

    merci
    test:=copy(test,1,length(test)-1);

  7. #7
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Cela ne marche pas avec les propriétés d'un objet. Dans ce cas il faut faire une copie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text) -1);

  8. #8
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    avec Delete, ça marche tres bien.
    On ne peut pas passé un edit en parametre mais bon.

    Tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      s : string;
    begin
      s :=edit1.text;
      delete(s,length(s),1);
      edit1.text:=s;
    end;

    ça marche tres bien.

    Et merci adnotor, je ne connaissais pas
    je faisais la methode du copy.

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ Peter27x, Andnotor et Aos maintenant c'est ok, merci les gars.

    @+,

    Cincap

  10. #10
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Un truc m'échappe, Jcpan = Cincap ?

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ Peter27x, jcpan = tout le monde pour moi mais bien entendu c'est lui qui marquera le "Résolu".

    @+,

    Cincap

  12. #12
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par cincap Voir le message
    @ Peter27x, jcpan = tout le monde pour moi mais bien entendu c'est lui qui marquera le "Résolu".

    @+,

    Cincap
    Rien compris !

    Mais alors...... RIEN !!

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ Peter27x, ton message trouve une réponse à deux directions, en effet :

    1, Cincap se cache derrière Jcpan = faux

    2, Cincap répond à la place de Jcpan = vrai car ce genre d'astuce l'intéresse ce qui permet l'évolution de l'humain.

    Voila voilou.

    @+,

    Cincap

  14. #14
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    Moi j'ai compris maintenant, meme si ça reste tres suspect
    lol

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ Aos, suspect, pas du tout le même style

    Et puis Cincap me convient tout comme Max, aucune raison de se cacher derrière un autre alias.

    Les administrateurs peuvent confirmer si ils ont du temps à perdre.

    Eh les gars ont s'écartent du post !

    Aos inscription janvier 2006
    Cincap inscription janvier 2006

    @+,

    Cincap

  16. #16
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    A part ça, ... Delete, Copy, il y a plein de façon de le faire

    En voici plein d'exemple

    De loin, la plus simple finalement, pour enlever un caractère suffit à la fin, suffit de la raccourcir plus lent que le Delete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure ReduceStrBySetLength(var S: string; NewLength: Integer);
    begin
       SetLength(S, NewLength);
    end;
    Fondamental, rapide, économique en mémoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure ReduceStrByDelete(var S: string; NewLength: Integer);
    begin
       Delete(S, NewLength + 1, MaxInt);
    end;
    Le plus Lent, sans conteste, des cas rares ou l'optimisation delphi avec les chaines nous fait un truc de fou et cela devient aussi rapide que le Delete ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure ReduceStrByCopy(var S: string; NewLength: Integer);
    begin
      S := Copy(S, 1, NewLength);
    end;
    Pour la curiosité ... plus rapide que le Delete, surtout pour les delphi 3 à 7 ... après il semble que cela ne soit plus pertinent, ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure ReduceStr(var S: string; NewLength: Integer);
    type
       PStrRec = ^StrRec;
       StrRec = packed record
          refCnt: Longint;
          length: Longint;
       end;
    begin
       if NewLength < Length(S) then
       begin
          S[Succ(NewLength)] := #0; 
          PStrRec(Integer(S) - SizeOf(StrRec)).length := NewLength;
       end;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  17. #17
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    Ah je suis decouvert alors,
    cincap=aos ????
    Je me suis inscrit vers 2004 mais il y avait eu un probleme avec mon compte
    donc je me suis réinscrit avec un nouveau compte.


    SHAILETROLL : Merci pour ces précisions.
    Le seul hic dans ReduceStrBySetLength, c'est qu'il faut connaitre la longueur
    de la chaine pour la passé en paramètre

    edition :
    @shaiLetroll, en faite, il suffit de passé length(chaine) -1 en parametre donc je retire ce que j'ai dit au dessus, mais je le laisse quand meme pour que tu
    vois le message.

  18. #18
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Effectivement, AOS, c'est la vision inverse, ... on indique le nombre de caractère restant (finalement comme avec le Copy) ... dans certains cas, le code est plus facile à lire en utilisant ReduceStr qu'en mettant un Delete où il faudra donner le nombre de caractère à supprimer ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut Le grand maître est passé !
    Bonjour à toutes et à tous,

    @ ShaiLeTroll, excellente réponse oh grand maître.

    Merci aussi à tous pour des réponses rapides et solutions qui font toujours avancer les connaissances.

    @+,

    Cincap

  20. #20
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    Merci à tous

    je met résolu

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

Discussions similaires

  1. [AC-2007] supprimer le dernier mot d'une chaine de caractère
    Par francois.mv dans le forum Access
    Réponses: 1
    Dernier message: 30/06/2015, 19h31
  2. Supprimer les 4 derniers caractères d'une chaine
    Par orditosh dans le forum WinDev
    Réponses: 4
    Dernier message: 28/06/2008, 13h40
  3. supprimer le dernier caractère d'une chaine
    Par can48yous dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 16/06/2008, 17h24
  4. Réponses: 2
    Dernier message: 25/04/2008, 13h48
  5. Supprimer le premier caractère d'une chaine de caractères
    Par Droïde Système7 dans le forum Langage
    Réponses: 2
    Dernier message: 30/09/2005, 12h13

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