Trouver et modifier le caractere ds 1 Edit ou Label [Résolu]

Messages postés
87
Date d'inscription
samedi 28 août 2004
Dernière intervention
30 janvier 2014
- - Dernière réponse : Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 11 janv. 2008 à 11:02
Bon jour à tous,
Je cherche sans succès sur le net et je ne trouve pas ce qui pourrait m’aider,

et c’est pour ça que je recours a qui peut m’aider…
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??> 

voila je cherche et je trouve le caractere ds une chaîne avec

 

if (copy(ldescrip, 3,3) = '.') then

 

Maintenant je veux changer le ‘.’ Par ‘_’

 

quelque chose du genre

 

(ldescrip, 3,3) := ‘_’

 

je bloque là dessus

 

Merci de votre aide

810mcu
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
87
Date d'inscription
samedi 28 août 2004
Dernière intervention
30 janvier 2014
3
Merci
Salut tout le monde,

Toutes vos suggestions sont valables et m’ont inspirer


Super et merci a tous

@+
810mcu

Merci 810mcu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de 810mcu
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
0
Merci
salut,

si tu regarde dans l'aide de Delphi par exemple sous "copy function" tu y verra un lien "string handling routines" qui contient plein de fonction de gestion de text.

entre autre " AnsiReplaceStr " qui pourrait répondre à ta question.

sinon, tu peux toujours affecter directement le char :
s[3] = '_';

/!\ en pascal les chaines commence à l'index 1 ! donc vérifie toujours que ton index soit > 0 et inférieur ou égal à la longeur de la chaine.

bon code,

Loda

PS:
Un lien utile: [tutoriaux/DELPHI-40-FONCTIONS-UTILES-CLASSEES-THEME_217.aspx http://www.delphifr.com<wbr>/tutoriaux/DELPHI-40-FONCTIONS<wbr>-UTILES-CLASSEES-THEME_217.aspx
</wbr></wbr>]
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Commenter la réponse de cs_Loda
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
Dernière intervention
6 janvier 2011
0
Merci
Bonjour ;-)


 


Voilà, je vous propose une petite idée:



procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['.'] then key:='_';
end;

Cette procedure vous permet de remet tous les . en _ dans un TEdit

Bonne chance et bonne programmation.



haftari.fouad
Commenter la réponse de HAFTARIFOUAD
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
0
Merci
Bonjour 810mcu,


Je te propose une solution toute bête, un peu dans le même genre que celle de haftarifouad.

procedure TForm1.ChangeDotToUnderscore(Msg: ShortString)
var
  i: Byte; // si la chaîne contient au plus 255 caractères
begin
  for i := 1 to Length(Msg) do
  begin
    if Msg[i] = '.' then
      Msg[i] := '_';
  end; // for
end; // procedure

Bonne prog'.
Commenter la réponse de zwyx
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
Dernière intervention
6 janvier 2011
0
Merci
Salut Monsieur ZWYX

Trés bonne votre idée merci pour l'exemple et bonne prog

haftari.fouad
Commenter la réponse de HAFTARIFOUAD
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
0
Merci
@ HAFTARIFOUAD et zwyx:

hum.....

et "AnsiReplaceStr" ? Regardez l'aide, juste FYI.

bonne lecture,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Commenter la réponse de cs_Loda
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
Salut,

voici une fonction que je viens d'écrire pour toi
et en plus elle est ultra rapide ce qui ne gâche rien

ce qui n'est pas le cas de  AnsiReplaceStr et toute la clique

Function ReplaceChar(Const S : String; Const OldChar, NewChar : Char): String;
Var P, PR : PByte;
    OldByte : Byte Absolute OldChar;
    NewByte : Byte Absolute NewChar;
    Size : Integer;
Begin
  P := PByte(S);
  Size := Length(S);
  SetLength(Result, Size);
  PR := PByte(Result);
   While P^ <> $0 Do Begin
    If P^ = OldByte Then Pr^ := NewByte
       Else Pr^ : = P^;
    Inc(Pr);
    Inc(P);
  End;
End;
<center>Highlighted with Pas2HTML</center>

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
Dernière intervention
6 janvier 2011
0
Merci
Salut Monsieur  LODA ;-)

Les méthodes se diffèrent et la solution et une seule. Qu'est ce qu'on doit faire si la touche F1 sa marche pas lol.

donc on choisira le moindre cout, effort pour une solution meilleure.

Merci pour l'idée et bonne programmation.
haftari.fouad
Commenter la réponse de HAFTARIFOUAD
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
Après une courte réflection
je me suis rendu compteque l'on pouvait encore raccourcir le code
et du coup le rendre encore plus performant :

Function ReplaceChar(Const S : String;
Const OldChar, NewChar : Char): String;
Var PR
: PByte;
    OldByte : Byte Absolute
OldChar;
    NewByte : Byte Absolute
NewChar;
    Size : Integer;
Begin

  Size := Length(S);
  Result := S;
  SetLength(Result,
Size);
  PR := PByte(Result);
  While
Pr^ <> $0  Do

    Begin
      If Pr^ = OldByte Then
Pr^ := NewByte;
      Inc(Pr);
     End ;
End;

<center>Highlighted with Pas2HTMLhttp://www.delphifr.com/</center>

 
@+
Cirec

<hr siz ="" />
Commenter la réponse de Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
Et si il vous faut un exemple :

Edit1.Text := 'Ed.it1.test.1.2.3.';

  Edit2.Text := ReplaceChar(Edit1.Text, '.', '_');
//renvoi : Edit2.Text := 'Ed_it1_test_1_2_3_'

@+
Cirec

<hr siz ="" />
Commenter la réponse de Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
Juste un petit truc ...

c'est la (ou les) réponse qui te convient qu'il faut accepter et non la tienne (qui au passage n'est pas une réponse mais un remerciement)

Merci

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.