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

 Delphi Discussion :

Couper du texte dans un TEdit ou un TMemo


Sujet :

Delphi

  1. #1
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut Couper du texte dans un TEdit ou un TMemo
    Bonjour

    Comment couper un texte à des endroits précis ?

    Ex : CuNO3ZnX

    je dois obtenir :

    • Cu
    • N
    • O
    • 3
    • Zn
    • X
    Qud une minuscule suit une majuscule je garde la majuscule et la minuscule

  2. #2
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Parcours les caracteres pour detecter les index de debut et de fin du morceau a decouper.

    Apres, suffit d'utiler les multiples fonctions de traitement de chaines de caracteres : Copy, Delete, Pos, ...

  3. #3
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    Je n'ai pas delphi ou je suis actuellement pour tester
    Mon code est-il correct ?

    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
    s:=Edit1.text;
    l:=length(s); 
    temp:='';temp2:='';temp3:='';
    for i=0 to l do
      begin
      c:=s[i];
      if c in ['a'..'z'] then
         begin
         z:=copy(s,i,i-1);
         temp:=temp+z;
         end else
      if c in ['A'..'Z'] then
         begin
         z:=copy(s,i,i);
         temp2:=temp2+z;
         end else begin
       if c in ['0'..'9'] then
         begin
         z:=copy(s,i,i);
         temp3:=temp3+z;
         end;
      end;
      end
    merci

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 681
    Points : 7 114
    Points
    7 114
    Par défaut
    Ta variable i de ton for doit commencer à 1.

  5. #5
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Est-il possible de faire un case avec c pour éviter la répétition des if ?

    merci

    AT

  6. #6
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    directement non.
    Mais il existe uen astuce qui permet de le faire.
    Mais dans ton cas ca sera trop complexe a mon avis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Var List : TStringList;
    List := TStringList.Create;
    List.add('toto');
    List.add('titi');
    List.add('tata');
    Case List.IndexOf(s) of
      0 : // Toto;
      1 : // Titi;
      2 : // Tata;
    End;

  7. #7
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    ok merci

  8. #8
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonsoir

    ildoit etre possible de faire un case avec c, à condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    c: integer;
    ...
    ...
    c := ord(s[i]);
    case c of
      65..91 : // vérifier les chiffres correspondants aux caractères désirés 
    ...
    à +

  9. #9
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Dans le cas présent il est plus simple est de travailler avec un Char:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      C: Char;
    begin
      case C of
            '0'..'9': // ...
            'A'..'Z': // ...
      end;
      // ...
    end;
    @+ Claudius

  10. #10
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Dans le cas présent il est plus simple est de travailler avec un Char:
    Il est vrai que a la base un caractere est connu via son code ascii (integer ) par le programme

    Au pire suffit de remplacer 'A'..'Z' par ord('A')..ord('Z')

  11. #11
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    La discussion étant passé en résolu, je n'avais pas posté mon code, mais j'avais fait ceci:
    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
     
    procedure ParseFormula(F: string; var SL: TStringList);
    var
      I, L: Integer;
      S: ShortString;
      C: Char;
    begin
      L := Length(F);
    {$C+}
      Assert(L > 0, 'Chaîne vide');
    {$C-}
      with SL do
      begin
        Clear;
        I := 1;
        repeat
          C := F[I];
          case C of
            '0'..'9': S := C;
            'A'..'Z':
              begin
                S := C;
                if (I < L) and (F[I+1] in ['a'..'z']) then
                begin
                  S := S + F[I+1];
                  Inc(I);
                end;
              end;
            else
              S := C + ' (?)';
          end;
          Inc(I);
          SL.Add(S);
        until (I > L);
      end;
    end;
    @+ Claudius

  12. #12
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    ok merci

    car j'avais teste hier soir mon code et c'etait pas encore ça


    AT

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

Discussions similaires

  1. Alignement d'un texte dans un TEdit
    Par LoicH dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/11/2010, 23h03
  2. texte dans un TEdit ou TStaticText
    Par androz dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/08/2008, 18h55
  3. Curseur à la fin du texte dans un TEdit
    Par Duan dans le forum Débuter
    Réponses: 2
    Dernier message: 29/05/2008, 07h05
  4. [Lazarus] Comment récupérer un texte dans un Tedit ?
    Par Ben8282 dans le forum Lazarus
    Réponses: 10
    Dernier message: 29/01/2008, 22h53
  5. TEdit.Text dans Requête SQL?!?
    Par zarbydigital dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/10/2005, 10h37

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