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 :

[Débutant] Lecture caractère par caractère


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut [Débutant] Lecture caractère par caractère
    Bonjour,

    Je copie un fichier texte dans un memo et je souhaiterais lire caractère par caractère le texte dans le mémo pour écrire ensuite dans un tableau le code ascii correspondant au caractère lu. Avec un mémo je n'arrive à lire que les lignes(Memo1.Lines) mais je ne sais pas comment faire pour lire les caractères un à un dans un mémo jusquà la fin du mémo et le copier par exemple dans un autre mémo pour le moment.Je vous remercie

    Boober

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Un petit coup de t'aurait donné:
    Qui renvoie une chaine de caractère contenant le texte complet du TMemo (CR/LF compris)
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Chaque ligne (Lines) est une chaîne, donc
    représente le jème caractère de la ième ligne, en bouclant de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i := 0 to memo.Lines .Count - 1 do
    for j := 1 to Length (Memo .Lines [i]) do
    s := Memo .Lines [i] [j];
    Roland
    Roland

  4. #4
    Membre actif Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Points : 201
    Points
    201
    Par défaut
    Salut,
    il te suffit de faire comme ça :
    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
     
    Var
    i,j : integer;
    Caractere : char;
     
     For i := 0 to Memo1.lines.count-1 do 
     begin 
      //On répète pour chaque ligne
        For j := 0 to length(Memo1.lines.ValueFromIndex[i]) do
        begin
             //Caractere est le caractère que tu veux récupérer
            Caractere := Memo1.lines.ValueFormIndex[i][j]
            // ton code pour gérer ton cractère récupérer ici
        end;
    end;
    @+
    Silk

  5. #5
    Membre actif Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Points : 201
    Points
    201
    Par défaut
    Vive les messages croisés
    Silk

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    je vous remercie beaucoup. juste une petite dernière question. pourquoi ça marche pas aprés si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Memo2.Lines[i][j] :=caractere;
    pour copier le caractère dans le memo2 . Le compilateur me dit que Memo2.Lines[i][j] n'est pas affectable.
    Merci

    ps: Silk je n'ai pas utilisé ton ValueFromIndex qui aparamment n'est pas forcément nécessaire.

  7. #7
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Memo2.Lines[i].Strings[j]:=caractère;
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    ok mais pourquoi?
    Merci Pedro

  9. #9
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Parce que Lines est du type TStrings et que la propriété qui contient chaque ligne est... Strings[Index:integer]
    Sinon, tu as aussi, comme je le disais plus haut, la propriété Memo1.Lines.Text qui renvoit tout le texte concaténé CR/LF compris
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Points : 13
    Points
    13
    Par défaut apres modi
    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
    procedure TForm2.Button1Click(Sender: TObject);
    Var
    i,j : integer;
    Caractere : char;
    Begin
     For i := 0 to Memo1.lines.count -1 do
     begin
      //On répète pour chaque ligne
        For j := 1 to length(Memo1.lines.ValueFromIndex[i]) +1 do
        begin
             //Caractere est le caractère que tu veux récupérer
            Caractere := Memo1.lines[i][j];
            ShowMessage(Caractere);
            // ton code pour gérer ton cractère récupérer ici
        end;
    end;
    end;

  11. #11
    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 boober31 Voir le message
    ok mais pourquoi?
    Merci Pedro
    Parce que "lines" est une propriété en lecture seule.
    C'est un des gros avantages des property. Elles permettent de definir des variables publiques dont on peut restreindre d'acces en lecture/ecriture.

    Apres, la difference entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1.Lines[i].Strings[j]
    et est une question de syntaxe.

    Dans la premiere, le l'analyseur va lire la property lines[i] et ensuite va enregistrer le caractere dans la variable Strings[j], donc on accede a lines en lecteur et c'est Strings qui est accédé en ecriture.

    Dans le 2e cas, on affecte le caractere a Lines[i] car cet objet possede une property par defaut : Strings. Autrement dit, quand on affecte une variable directement a Lines, elle est redirigée vers sa property Strings.
    Donc pour le compilateur, C'est Lines[i] qui est affecté, meme si derriere l'objet effectue une redirection sur Strings[j]

    La property Lines etant definie en lecture seule, le compilo hurle
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/06/2008, 11h48
  2. Lecture fichier par caractère & strcmp
    Par YASIR dans le forum Débuter
    Réponses: 32
    Dernier message: 11/04/2008, 22h01
  3. Réponses: 18
    Dernier message: 17/01/2007, 12h49
  4. Réponses: 6
    Dernier message: 16/12/2006, 15h08
  5. Réponses: 10
    Dernier message: 19/06/2006, 19h04

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