begin process at 2012 02 11 09:10:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

Texte

 > 

Remplacement auto de caractères


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Remplacement auto de caractères

dimanche 29 décembre 2002 à 12:01:08 | Remplacement auto de caractères

finipe

Bonjour à tous.

Il y a qques temps de ça, j'avais demandé un coup de pouce pour le problème suivant : remplacer automatiquement un caractère par un autre pendant la saisie d'une chaîne. On m'avait donné la fonction suivante, qui marche impeccable (c'est magique ! ) :

function Replace(sData: String; sSubstring: String; sNewsubstring: string): String;
var pos1:integer;
s2,res:string;
begin
s2:=sData;
pos1:=pos(sSubstring,s2);
res:='';
while (pos1<>0) do
begin
res:=res+copy(s2,1,pos1-1)+sNewsubstring;
s2:=copy(s2,pos1+length(sSubstring),length(s2)+1-(pos1+length(sSubstring))); //le fait sauf au dernier passage
pos1:=pos(sSubstring,s2);
end;
res:=res+s2;
Result:=res;
end;

Ensuite il suffit donc de placer une ligne du type...

name.Text := Replace(name.Text,' ','.');

... pendant un événement de type OnKeyPress pour remplacer automatiquement les espaces par des points.

Tout fonctionne très bien, sauf que maintenant je voudrais justement que le dernier caractère soit pris en compte, ce qui n'est pas le cas de cette fonction. J'ai beau essayer de trouver la combine, je capte pas bien la fonction déjà, donc je suis mal barré pour y arriver tout seul.

Un autre coup de pouce des programmateurs surdoués ?

Merci à vous et à +

-----------------------------------------------
"La liberté, c'est de pouvoir dire merde à tout le monde." (R. Dorgelès)
dimanche 29 décembre 2002 à 14:53:23 | Re : Remplacement auto de caractères

Delphiprog

Administrateur CodeS-SourceS
Il me semble aussi avoir proposé ceci :
"StringReplace renvoie une chaîne dans laquelle les occurrences d?une sous-chaîne sont remplacées par une autre sous-chaîne.

Unité : SysUtils

Catégorie : routines de gestion des chaînes

type
TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

Description

StringReplace remplace dans une chaîne les occurrences d?une sous-chaîne, OldPattern, par une autre sous-chaîne, NewPattern. StringReplace considère que la chaîne peut contenir des caractères multi-octets.

Si le paramètre Flags n?inclut pas rfReplaceAll, StringReplace ne remplace que la première occurrence de OldPattern dans la chaîne S. Si le paramètre Flags inclut rfIgnoreCase, la comparaison ne tient pas compte de la casse."

Cà ne fonctionne pas ?
Comme l'unité SysUtils est incluse avec chaque fiche, ça ne consomme pas de mémoire que d'utiliser ce qui existe déjà !

May Delphi be with you


-------------------------------
Réponse au message :
-------------------------------

> Bonjour à tous.
>
> Il y a qques temps de ça, j'avais demandé un coup de pouce pour le problème suivant : remplacer automatiquement un caractère par un autre pendant la saisie d'une chaîne. On m'avait donné la fonction suivante, qui marche impeccable (c'est magique ! ) :
>
> function Replace(sData: String; sSubstring: String; sNewsubstring: string): String;
> var pos1:integer;
> s2,res:string;
> begin
> s2:=sData;
> pos1:=pos(sSubstring,s2);
> res:='';
> while (pos1<>0) do
> begin
> res:=res+copy(s2,1,pos1-1)+sNewsubstring;
> s2:=copy(s2,pos1+length(sSubstring),length(s2)+1-(pos1+length(sSubstring))); //le fait sauf au dernier passage
> pos1:=pos(sSubstring,s2);
> end;
> res:=res+s2;
> Result:=res;
> end;
>
> Ensuite il suffit donc de placer une ligne du type...
>
> name.Text := Replace(name.Text,' ','.');
>
> ... pendant un événement de type OnKeyPress pour remplacer automatiquement les espaces par des points.
>
> Tout fonctionne très bien, sauf que maintenant je voudrais justement que le dernier caractère soit pris en compte, ce qui n'est pas le cas de cette fonction. J'ai beau essayer de trouver la combine, je capte pas bien la fonction déjà, donc je suis mal barré pour y arriver tout seul.
>
> Un autre coup de pouce des programmateurs surdoués ?
>
> Merci à vous et à +
>
> -----------------------------------------------
> "La liberté, c'est de pouvoir dire merde à tout le monde." (R. Dorgelès)


Cette discussion est classée dans : string, res, s2, pos1, ssubstring


Répondre à ce message

Sujets en rapport avec ce message

Sous Class [ par delphi ] Salut je voudrais savoir comment passer une sous class avec delphi ??par exemple avec vb ça se fait comme ça :Public Declare Function ShowWindow Lib " lancement d'un fichier au démarrage de l'application [ par Pierre ] Comment est-il possible, en Delphi, de lancer un fichier (.txt par exemple comme je l'indique ci-après) au démarrage sans que la TForm apparaisse ? Av limitation de sendtext ? [ par Xavier ] Bonjour,Comme la fonction sendtext prend en parametre un string et sachant qu'un string peut faire 2 Mo, pensez-vous qu'il est raisonnable d'utiliser Pb avec TListView et TListItem [ par Biose ] Salut à tous, Voilà mon problème, je me sert d'une ListView et à ma premiere action, je rempli ma premiere colonne ://ici "ori" à une valeur String et Prendre les deux derniers caractères d'une string... [ par ELECTRORESiSTiK ] Salut,Pourriez-vous m'expliquer comment prendre les deux dernier caractères d'une string ?Merci d'avance!Bonne Soirée String déjà existante... [ par finipe ] Bonjour à tous ! J'ai deux problèmes à vous soumettre :- Dans un programme je passe des items d'une combobox à une listbox, d'un simple clique de bout String et Retour chariot [ par lomig ] J'ai une chaine de caractere constituée de deux mots que je veuxséparer par un retour chariot et ensuite insérer cette chaine dans unfichier texte. Si Impression String [ par teamours ] J'aurais voulu savoir si tu connaissais le moyen d'imprimer le contnue de cet editbox Copier un Fichier dans une string [ par lomig ] Question a la con: comment fait-on pour copier un fichier (texte) dans une chaine (string)?? string de plus de 255 caracteres?:( [ par aliong ] Bonjour!comme vous le remarkerer je suis newbies donc ne m'en voulez po pour cette kestion ki va etre pour la plupart d'entre vous de la rigolade alor


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales