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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part Delete(Test, Length(Test), 1);
@ Andnotor, je n'ai pas compris ta façon de faire.
Si tu pouvais m'expliquer.
Merci,
@+,
Cincap
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).
@ Andnotor, "test" doit être integer alors j'essaye de le faire avec un Tedit et cela ne fonctionne pas.
Je continue....
@+,
Cincap
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);
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.
@ Peter27x, Andnotor et Aos maintenant c'est ok, merci les gars.
@+,
Cincap
@ Peter27x, jcpan = tout le monde pour moi mais bien entendu c'est lui qui marquera le "Résolu".
@+,
Cincap
@ 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
Moi j'ai compris maintenant, meme si ça reste tres suspect
lol
@ 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
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
Fondamental, rapide, économique en mémoire
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;
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 ReduceStrByDelete(var S: string; NewLength: Integer); begin Delete(S, NewLength + 1, MaxInt); 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 procedure ReduceStrByCopy(var S: string; NewLength: Integer); begin S := Copy(S, 1, NewLength); end;
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
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.
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager