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

Langage Delphi Discussion :

Caractères interdits dans 'Name'


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut Caractères interdits dans 'Name'
    bonjour, bonsoir

    On le c'est tous les Name de composant n'accepte pas certain caractères.

    Je doit créer en dynamique dans mon appli Une form par table Access, hors Acces accepte quaziement tous les caractères. Etant donnée que l'utilitaire que je créer peux ouvrir n'importe qu'elle base, je peu etre confronté à se problème.

    J'ai réalise ce code pour modifier les caractères interdit avant la cr"éation de la form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    // ...
       // On retire les caractères interdits
            NameFenetre := StringReplace(NomFenetreFille,' ','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'-','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'/','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'@','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'&','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'*','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'é','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'è','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'à','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'ï','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'î','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'ê','',[rfReplaceAll,rfIgnoreCase]);        NameFenetre := StringReplace(NameFenetre,'#','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'ô','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'ö','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'â','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'ç','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'ù','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'%','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'!','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'.','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'?','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,',','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'^','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'¨','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'µ','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'$','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'£','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'<','',[rfReplaceAll,rfIgnoreCase]);
            NameFenetre := StringReplace(NameFenetre,'>','',[rfReplaceAll,rfIgnoreCase]);
     
          With TFTravail.Create(Self) do
          Begin
            Name := NomFenetre;
            Caption := 'Table ' + NomFenetreFille;
            Height := 350;
            Width := 550;
            StatusBar1.Panels[2].Text := Self.StatusBar1.Panels[0].Text;
          end;
    // ...
    Existe-t-il un moyen plus rapide pour procéder ?

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    bon,

    Pour essayer j'ai fais cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function CarAutoriser(s: String): Boolean;
    Const
      Car: array[0..61] of char =
      (
      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
      'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y','z',
      'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z'
      );
    var
      i,j : Integer;
      Trouver: Integer;
    Begin
      Result := true;
     
      for i:= 0 to Length(s)-1 do
      begin
        Trouver := 0;
        for j:= 0 to high(Car) do
        Begin
          if s[I] = car[j] then
          begin
            Trouver:= 1;
            Break;
          end;
        end;
        if Trouver = 0 then
        Begin
          Result := False;
          exit;
        end;
      end;
     
    end;
    Cette function retourne faux si un caractere dans la chaine S n'ai pas supporté.
    Mais mlalheureusement elle fonctionne pas à cause que le test
    if s[i] = car[j] then

    s[i] est vide,

    alors qu'avant la boucle for j:=0 to high(car) do
    s[i] est bien égale au caractère de position dans s !!!!!

    un petit coup de main...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 203
    Points : 146
    Points
    146
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Const
      IllegalInput : array[0..x] of char = ( '-', '/', '@',...,); //Ajoutez les autres
     
     
    function ReplaceAll(str : string): string;
    var
      i : integer;
    begin
      for i := 1 to Length(str) do
       begin
         if str[i] in IllegalInput then
           str[i] := ' ';
       end;
    result := Trim(str);
    end;

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 755
    Points : 13 349
    Points
    13 349
    Par défaut
    Hey Buzz!

    1. Une chaîne commence au caractère 1, pas 0!

    2. Donner un nom à ta fiche n'est pas obligatoire. Tu peux créer autant de fiche sans nom que tu le souhaites. Mais si tu veux absolument en assigner un, tu devras encore t'assurer qu'il est unique parmi les autres composants.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Points : 43
    Points
    43
    Par défaut
    Delphi 2008/2009 prennent en charge l'UNICODE. Vivement que j'y mette les mains dessus

  6. #6
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Merci à vous.

    La solution de pepi effectivement fonctionne (le cout du trim pas mal).

    Mais entre temps j'ai regarder mon programme et je me suis dit que cela servais à rien de les només. c'etaitt trop contraignant.

    j'ai donc opter pour la create sans name, d'ailleur AndNotOr en parle justement.

    Merci vous avez répondu à ma problèmatique.

  7. #7
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Points : 43
    Points
    43
    Par défaut
    Merci a eux. Et n'oublie pas le tag "résolu"

  8. #8
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par Nopain Voir le message
    Merci a eux. Et n'oublie pas le tag "résolu"
    Déjà fait avant ton post lol...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. caractères interdit dans un nom de fichier
    Par michel71 dans le forum Langage
    Réponses: 21
    Dernier message: 11/08/2010, 16h05
  2. caractère espace dans un lien ?
    Par kayser dans le forum ASP
    Réponses: 2
    Dernier message: 20/04/2004, 09h52
  3. Chaines avec caractères accentués dans interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2004, 17h12
  4. Chaînes avec des caractères accentués dans Interbase
    Par François Marliac dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/03/2004, 22h39
  5. [xm] pb affichage caractère e dans l'o ..
    Par peppena dans le forum XML/XSL et SOAP
    Réponses: 21
    Dernier message: 25/02/2004, 10h16

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