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

810mcu 87 Messages postés samedi 28 août 2004Date d'inscription 30 janvier 2014 Dernière intervention - 10 janv. 2008 à 10:21 - Dernière réponse : Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention
- 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 

11 réponses

Répondre au sujet
810mcu 87 Messages postés samedi 28 août 2004Date d'inscription 30 janvier 2014 Dernière intervention - 10 janv. 2008 à 16:40
+3
Utile
Salut tout le monde,

Toutes vos suggestions sont valables et m’ont inspirer


Super et merci a tous

@+
810mcu
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de 810mcu
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 10 janv. 2008 à 10:41
0
Utile
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
HAFTARIFOUAD 298 Messages postés mercredi 5 septembre 2007Date d'inscription 6 janvier 2011 Dernière intervention - 10 janv. 2008 à 11:56
0
Utile
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
zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 10 janv. 2008 à 12:17
0
Utile
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
HAFTARIFOUAD 298 Messages postés mercredi 5 septembre 2007Date d'inscription 6 janvier 2011 Dernière intervention - 10 janv. 2008 à 12:22
0
Utile
Salut Monsieur ZWYX

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

haftari.fouad
Commenter la réponse de HAFTARIFOUAD
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 10 janv. 2008 à 12:35
0
Utile
@ 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
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 10 janv. 2008 à 12:42
0
Utile
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
HAFTARIFOUAD 298 Messages postés mercredi 5 septembre 2007Date d'inscription 6 janvier 2011 Dernière intervention - 10 janv. 2008 à 12:45
0
Utile
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
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 10 janv. 2008 à 12:49
0
Utile
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
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 10 janv. 2008 à 12:54
0
Utile
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
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 11 janv. 2008 à 11:02
0
Utile
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.