Petite question (sans doute récurrente dans ce forum, mais je n'ai pas
trouvé la réponse).
La fonction ASC est censée livrer le cose ASCII des caractères lus.
Mais comment déceler les caractères non lisibles (retour chariot par
exemple).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-marc
jyM wrote:
Amis du jour, bonjour
Ami du soir, Bonsoir !
Petite question (sans doute récurrente dans ce forum, mais je n'ai pas trouvé la réponse). La fonction ASC est censée livrer le cose ASCII des caractères lus.
Et c'est bien ce qu'elle fait :-)
Mais comment déceler les caractères non lisibles (retour chariot par exemple).
Toujours avec Asc.
Vois le programme suivant :
Dim s As String Dim c As String Dim i As Long
s = "hello" & vbCrLf & "world"
For i = 1 To Len(s) c = Mid$(s, i, 1) Debug.Print Asc(c) & " "; Next i
Debug.Print
Et voici ce qu'il produit en sortie :
104 101 108 108 111 13 10 119 111 114 108 100
Tu vois le 13 et le 10, respectivement en 6eme et 7emme position ? Ce sont les codes ascii résultants du décodage de vbCrLf, qui se décompose en CR (13) et LF (10) qui sont bien les 2 caractères qui servent à encoder un retour chariot.
Petite question (sans doute récurrente dans ce forum, mais je n'ai pas
trouvé la réponse).
La fonction ASC est censée livrer le cose ASCII des caractères lus.
Et c'est bien ce qu'elle fait :-)
Mais comment déceler les caractères non lisibles (retour chariot par
exemple).
Toujours avec Asc.
Vois le programme suivant :
Dim s As String
Dim c As String
Dim i As Long
s = "hello" & vbCrLf & "world"
For i = 1 To Len(s)
c = Mid$(s, i, 1)
Debug.Print Asc(c) & " ";
Next i
Debug.Print
Et voici ce qu'il produit en sortie :
104 101 108 108 111 13 10 119 111 114 108 100
Tu vois le 13 et le 10, respectivement en 6eme et 7emme position ?
Ce sont les codes ascii résultants du décodage de vbCrLf, qui se
décompose en CR (13) et LF (10) qui sont bien les 2 caractères qui
servent à encoder un retour chariot.
Petite question (sans doute récurrente dans ce forum, mais je n'ai pas trouvé la réponse). La fonction ASC est censée livrer le cose ASCII des caractères lus.
Et c'est bien ce qu'elle fait :-)
Mais comment déceler les caractères non lisibles (retour chariot par exemple).
Toujours avec Asc.
Vois le programme suivant :
Dim s As String Dim c As String Dim i As Long
s = "hello" & vbCrLf & "world"
For i = 1 To Len(s) c = Mid$(s, i, 1) Debug.Print Asc(c) & " "; Next i
Debug.Print
Et voici ce qu'il produit en sortie :
104 101 108 108 111 13 10 119 111 114 108 100
Tu vois le 13 et le 10, respectivement en 6eme et 7emme position ? Ce sont les codes ascii résultants du décodage de vbCrLf, qui se décompose en CR (13) et LF (10) qui sont bien les 2 caractères qui servent à encoder un retour chariot.
Petite question (sans doute récurrente dans ce forum, mais je n'ai pas trouvé la réponse). La fonction ASC est censée livrer le cose ASCII des caractères lus.
Et c'est bien ce qu'elle fait :-)
Mais comment déceler les caractères non lisibles (retour chariot par exemple).
Toujours avec Asc.
Vois le programme suivant :
Dim s As String Dim c As String Dim i As Long
s = "hello" & vbCrLf & "world"
For i = 1 To Len(s) c = Mid$(s, i, 1) Debug.Print Asc(c) & " "; Next i
Debug.Print
Et voici ce qu'il produit en sortie :
104 101 108 108 111 13 10 119 111 114 108 100
Tu vois le 13 et le 10, respectivement en 6eme et 7emme position ? Ce sont les codes ascii résultants du décodage de vbCrLf, qui se décompose en CR (13) et LF (10) qui sont bien les 2 caractères qui servent à encoder un retour chariot.
Merci à qui éclairera ma lanterne
J'espère qu'elle l'a été :-)
Cordialement,
Merci pour ta réponse. Mais justement je n'obtiens pas ce résultat. Je veux écrire un petit programme pour reformater des fichiers txt. Au préalable je fais un test sur un petit fichier qui comporte un mot, une ligne vide, et 2 autres mots (au total 26 caractères). La commande ASC produit une liste de 26 codes, mais point de retour chariot, ni de line feed.
Nota: j'utilise VB6. As tu une explication? Merci, @+
Jean-marc avait soumis l'idée :
jyM wrote:
Amis du jour, bonjour
Ami du soir, Bonsoir !
Petite question (sans doute récurrente dans ce forum, mais je n'ai pas
trouvé la réponse).
La fonction ASC est censée livrer le cose ASCII des caractères lus.
Et c'est bien ce qu'elle fait :-)
Mais comment déceler les caractères non lisibles (retour chariot par
exemple).
Toujours avec Asc.
Vois le programme suivant :
Dim s As String
Dim c As String
Dim i As Long
s = "hello" & vbCrLf & "world"
For i = 1 To Len(s)
c = Mid$(s, i, 1)
Debug.Print Asc(c) & " ";
Next i
Debug.Print
Et voici ce qu'il produit en sortie :
104 101 108 108 111 13 10 119 111 114 108 100
Tu vois le 13 et le 10, respectivement en 6eme et 7emme position ?
Ce sont les codes ascii résultants du décodage de vbCrLf, qui se
décompose en CR (13) et LF (10) qui sont bien les 2 caractères qui
servent à encoder un retour chariot.
Merci à qui éclairera ma lanterne
J'espère qu'elle l'a été :-)
Cordialement,
Merci pour ta réponse. Mais justement je n'obtiens pas ce résultat.
Je veux écrire un petit programme pour reformater des fichiers txt.
Au préalable je fais un test sur un petit fichier qui comporte un mot,
une ligne vide, et 2 autres mots (au total 26 caractères). La commande
ASC produit une liste de 26 codes, mais point de retour chariot, ni de
line feed.
Petite question (sans doute récurrente dans ce forum, mais je n'ai pas trouvé la réponse). La fonction ASC est censée livrer le cose ASCII des caractères lus.
Et c'est bien ce qu'elle fait :-)
Mais comment déceler les caractères non lisibles (retour chariot par exemple).
Toujours avec Asc.
Vois le programme suivant :
Dim s As String Dim c As String Dim i As Long
s = "hello" & vbCrLf & "world"
For i = 1 To Len(s) c = Mid$(s, i, 1) Debug.Print Asc(c) & " "; Next i
Debug.Print
Et voici ce qu'il produit en sortie :
104 101 108 108 111 13 10 119 111 114 108 100
Tu vois le 13 et le 10, respectivement en 6eme et 7emme position ? Ce sont les codes ascii résultants du décodage de vbCrLf, qui se décompose en CR (13) et LF (10) qui sont bien les 2 caractères qui servent à encoder un retour chariot.
Merci à qui éclairera ma lanterne
J'espère qu'elle l'a été :-)
Cordialement,
Merci pour ta réponse. Mais justement je n'obtiens pas ce résultat. Je veux écrire un petit programme pour reformater des fichiers txt. Au préalable je fais un test sur un petit fichier qui comporte un mot, une ligne vide, et 2 autres mots (au total 26 caractères). La commande ASC produit une liste de 26 codes, mais point de retour chariot, ni de line feed.
Nota: j'utilise VB6. As tu une explication? Merci, @+
LE TROLL
Bonjour,
Si tu n'as pas 13 10, c'est peut être que dans ta ligne il n'y a pas cette valeur, as-tu fais manuellement <Rc> au bout de ta ligne avant d'enregistrer le fichier, ah ?
Petite question (sans doute récurrente dans ce forum, mais je n'ai pas trouvé la réponse). La fonction ASC est censée livrer le cose ASCII des caractères lus.
Et c'est bien ce qu'elle fait :-)
Mais comment déceler les caractères non lisibles (retour chariot par exemple).
Toujours avec Asc.
Vois le programme suivant :
Dim s As String Dim c As String Dim i As Long
s = "hello" & vbCrLf & "world"
For i = 1 To Len(s) c = Mid$(s, i, 1) Debug.Print Asc(c) & " "; Next i
Debug.Print
Et voici ce qu'il produit en sortie :
104 101 108 108 111 13 10 119 111 114 108 100
Tu vois le 13 et le 10, respectivement en 6eme et 7emme position ? Ce sont les codes ascii résultants du décodage de vbCrLf, qui se décompose en CR (13) et LF (10) qui sont bien les 2 caractères qui servent à encoder un retour chariot.
Merci à qui éclairera ma lanterne
J'espère qu'elle l'a été :-)
Cordialement,
Merci pour ta réponse. Mais justement je n'obtiens pas ce résultat. Je veux écrire un petit programme pour reformater des fichiers txt. Au préalable je fais un test sur un petit fichier qui comporte un mot, une ligne vide, et 2 autres mots (au total 26 caractères). La commande ASC produit une liste de 26 codes, mais point de retour chariot, ni de line feed.
Nota: j'utilise VB6. As tu une explication? Merci, @+
Bonjour,
Si tu n'as pas 13 10, c'est peut être que dans ta ligne il n'y a pas
cette valeur, as-tu fais manuellement <Rc> au bout de ta ligne avant
d'enregistrer le fichier, ah ?
"jyM" <peacenlove@jym.net> a écrit dans le message de
news:mn.49cb7da22f004788.66418@jym.net...
Jean-marc avait soumis l'idée :
jyM wrote:
Amis du jour, bonjour
Ami du soir, Bonsoir !
Petite question (sans doute récurrente dans ce forum, mais je n'ai pas
trouvé la réponse).
La fonction ASC est censée livrer le cose ASCII des caractères lus.
Et c'est bien ce qu'elle fait :-)
Mais comment déceler les caractères non lisibles (retour chariot par
exemple).
Toujours avec Asc.
Vois le programme suivant :
Dim s As String
Dim c As String
Dim i As Long
s = "hello" & vbCrLf & "world"
For i = 1 To Len(s)
c = Mid$(s, i, 1)
Debug.Print Asc(c) & " ";
Next i
Debug.Print
Et voici ce qu'il produit en sortie :
104 101 108 108 111 13 10 119 111 114 108 100
Tu vois le 13 et le 10, respectivement en 6eme et 7emme position ?
Ce sont les codes ascii résultants du décodage de vbCrLf, qui se
décompose en CR (13) et LF (10) qui sont bien les 2 caractères qui
servent à encoder un retour chariot.
Merci à qui éclairera ma lanterne
J'espère qu'elle l'a été :-)
Cordialement,
Merci pour ta réponse. Mais justement je n'obtiens pas ce résultat.
Je veux écrire un petit programme pour reformater des fichiers txt.
Au préalable je fais un test sur un petit fichier qui comporte un mot, une
ligne vide, et 2 autres mots (au total 26 caractères). La commande ASC
produit une liste de 26 codes, mais point de retour chariot, ni de line
feed.
Si tu n'as pas 13 10, c'est peut être que dans ta ligne il n'y a pas cette valeur, as-tu fais manuellement <Rc> au bout de ta ligne avant d'enregistrer le fichier, ah ?
Petite question (sans doute récurrente dans ce forum, mais je n'ai pas trouvé la réponse). La fonction ASC est censée livrer le cose ASCII des caractères lus.
Et c'est bien ce qu'elle fait :-)
Mais comment déceler les caractères non lisibles (retour chariot par exemple).
Toujours avec Asc.
Vois le programme suivant :
Dim s As String Dim c As String Dim i As Long
s = "hello" & vbCrLf & "world"
For i = 1 To Len(s) c = Mid$(s, i, 1) Debug.Print Asc(c) & " "; Next i
Debug.Print
Et voici ce qu'il produit en sortie :
104 101 108 108 111 13 10 119 111 114 108 100
Tu vois le 13 et le 10, respectivement en 6eme et 7emme position ? Ce sont les codes ascii résultants du décodage de vbCrLf, qui se décompose en CR (13) et LF (10) qui sont bien les 2 caractères qui servent à encoder un retour chariot.
Merci à qui éclairera ma lanterne
J'espère qu'elle l'a été :-)
Cordialement,
Merci pour ta réponse. Mais justement je n'obtiens pas ce résultat. Je veux écrire un petit programme pour reformater des fichiers txt. Au préalable je fais un test sur un petit fichier qui comporte un mot, une ligne vide, et 2 autres mots (au total 26 caractères). La commande ASC produit une liste de 26 codes, mais point de retour chariot, ni de line feed.
Nota: j'utilise VB6. As tu une explication? Merci, @+
jyM
LE TROLL a présenté l'énoncé suivant :
Bonjour,
Si tu n'as pas 13 10, c'est peut être que dans ta ligne il n'y a pas cette valeur, as-tu fais manuellement <Rc> au bout de ta ligne avant d'enregistrer le fichier, ah ?
Bonjour Non, il s'agit d'un extrait de texte à reformater. je n'ai pas ajouté ou modifié les caractères. En tout état de cause, il y a bien un passage à la ligne, et ASC n'a pas trouvé le code. Bizarre non ??? %((
LE TROLL a présenté l'énoncé suivant :
Bonjour,
Si tu n'as pas 13 10, c'est peut être que dans ta ligne il n'y a pas
cette valeur, as-tu fais manuellement <Rc> au bout de ta ligne avant
d'enregistrer le fichier, ah ?
Bonjour
Non, il s'agit d'un extrait de texte à reformater. je n'ai pas ajouté
ou modifié les caractères.
En tout état de cause, il y a bien un passage à la ligne, et ASC n'a
pas trouvé le code.
Bizarre non ???
%((
Si tu n'as pas 13 10, c'est peut être que dans ta ligne il n'y a pas cette valeur, as-tu fais manuellement <Rc> au bout de ta ligne avant d'enregistrer le fichier, ah ?
Bonjour Non, il s'agit d'un extrait de texte à reformater. je n'ai pas ajouté ou modifié les caractères. En tout état de cause, il y a bien un passage à la ligne, et ASC n'a pas trouvé le code. Bizarre non ??? %((
LE TROLL
Bonjour,
Suite... mais, dans ton texte :
through There and advanced
de 27 signes (avec espaces), je présume que tu les mets dans des variables, soit dim v as string v = "through" v = v & " There and" v = v & "advanced"
msgbox v ' = through There and advanced
Dans ce cas de figure, pourquoi veux-tu trouver les caractères 13 + 10 ascii puisque tu ne les mets pas, pour les avoir il faut les mettre, soit :
v = "through" + chr(13) + chr(10) v = v & " There and" + chr(13) + chr(10) v = v & "advanced"
Nota bene : chr(13) + chr(10) = constante VB : vbCrLf (vbCr + vbLf)
Ainsi tu les auras !
Si jamais ça ne fonctionne toujours pas, passe ici tout ton code, tes variables, la façon dont tu entres le texte puis dont tu le testes, on va trouver, ce doit être à mon sens un petit détail (qui fait les gros problèmes parfois).
Si tu n'as pas 13 10, c'est peut être que dans ta ligne il n'y a pas cette valeur, as-tu fais manuellement <Rc> au bout de ta ligne avant d'enregistrer le fichier, ah ?
Bonjour Non, il s'agit d'un extrait de texte à reformater. je n'ai pas ajouté ou modifié les caractères. En tout état de cause, il y a bien un passage à la ligne, et ASC n'a pas trouvé le code. Bizarre non ??? %((
Bonjour,
Suite... mais, dans ton texte :
through
There and
advanced
de 27 signes (avec espaces), je présume que tu les mets dans des variables,
soit
dim v as string
v = "through"
v = v & " There and"
v = v & "advanced"
msgbox v ' = through There and advanced
Dans ce cas de figure, pourquoi veux-tu trouver les caractères 13 + 10 ascii
puisque tu ne les mets pas, pour les avoir il faut les mettre, soit :
v = "through" + chr(13) + chr(10)
v = v & " There and" + chr(13) + chr(10)
v = v & "advanced"
Nota bene : chr(13) + chr(10) = constante VB : vbCrLf (vbCr + vbLf)
Ainsi tu les auras !
Si jamais ça ne fonctionne toujours pas, passe ici tout ton code, tes
variables, la façon dont tu entres le texte puis dont tu le testes, on va
trouver, ce doit être à mon sens un petit détail (qui fait les gros
problèmes parfois).
"jyM" <peacenlove@jym.net> a écrit dans le message de
news:mn.4a0b7da2d0945e5c.66418@jym.net...
LE TROLL a présenté l'énoncé suivant :
Bonjour,
Si tu n'as pas 13 10, c'est peut être que dans ta ligne il n'y a pas
cette valeur, as-tu fais manuellement <Rc> au bout de ta ligne avant
d'enregistrer le fichier, ah ?
Bonjour
Non, il s'agit d'un extrait de texte à reformater. je n'ai pas ajouté ou
modifié les caractères.
En tout état de cause, il y a bien un passage à la ligne, et ASC n'a pas
trouvé le code.
Bizarre non ???
%((
de 27 signes (avec espaces), je présume que tu les mets dans des variables, soit dim v as string v = "through" v = v & " There and" v = v & "advanced"
msgbox v ' = through There and advanced
Dans ce cas de figure, pourquoi veux-tu trouver les caractères 13 + 10 ascii puisque tu ne les mets pas, pour les avoir il faut les mettre, soit :
v = "through" + chr(13) + chr(10) v = v & " There and" + chr(13) + chr(10) v = v & "advanced"
Nota bene : chr(13) + chr(10) = constante VB : vbCrLf (vbCr + vbLf)
Ainsi tu les auras !
Si jamais ça ne fonctionne toujours pas, passe ici tout ton code, tes variables, la façon dont tu entres le texte puis dont tu le testes, on va trouver, ce doit être à mon sens un petit détail (qui fait les gros problèmes parfois).
Si tu n'as pas 13 10, c'est peut être que dans ta ligne il n'y a pas cette valeur, as-tu fais manuellement <Rc> au bout de ta ligne avant d'enregistrer le fichier, ah ?
Bonjour Non, il s'agit d'un extrait de texte à reformater. je n'ai pas ajouté ou modifié les caractères. En tout état de cause, il y a bien un passage à la ligne, et ASC n'a pas trouvé le code. Bizarre non ??? %((
Jean-marc
jyM wrote:
Jean-marc avait soumis l'idée :
Merci pour ta réponse. Mais justement je n'obtiens pas ce résultat. Je veux écrire un petit programme pour reformater des fichiers txt. Au préalable je fais un test sur un petit fichier qui comporte un mot, une ligne vide, et 2 autres mots (au total 26 caractères). La commande ASC produit une liste de 26 codes, mais point de retour chariot, ni de line feed.
Je suppose que tu lis ton fichier ligne à ligne avec line input. Mieux, je suppose que ton code ressemble à s'y méprendre à ceci:
Dim f As Integer Dim s As String Dim i As Integer
f = FreeFile Open "c:test.txt" For Input As #f While Not EOF(f) Line Input #f, s For i = 1 To Len(s) Debug.Print Asc(Mid$(s, i, 1)) & " "; Next i Wend Debug.Print Close #f
J'ai aussi créé un fichier (test.txt) qui contient exactement ceci: (c'est comme le tien) :
Quand tu ouvres un fichier avec Open ... for Input ... et que tu fais des Line Input, et bien les caractères de saut de lignes ne sont pas lus. (si tu fais du C, c'est en fait l'inverse d'un fgets() qui lui retourne tout, fin de ligne compris).
Donc, si tu veux explicitement les fins de lignes, il te faut lire ton fichier en binaire et traiter le buffer. Voici par exemple :
Dim f As Integer Dim i As Integer Dim buffer As String Dim FileSize As Long
f = FreeFile Open "c:test.txt" For Binary As #f FileSize = LOF(f) buffer = Space$(FileSize) Get #f, , buffer Close #f
For i = 1 To FileSize Debug.Print Asc(Mid$(buffer, i, 1)) & " "; Next i Debug.Print
Super : j'ai maintenant bien mes 13 10 aux bons endroits :-)
Si tu veux en savoir plus sur les manips de fichiers, tu peux voir les articles suivants de la FAQ : http://faq.vb.free.fr/index.php?question5 http://faq.vb.free.fr/index.php?question9 http://faq.vb.free.fr/index.php?question4
Ces articles sont détaillés et comprennent des exemples de code "prêts à l'emploi".
Merci pour ta réponse. Mais justement je n'obtiens pas ce résultat.
Je veux écrire un petit programme pour reformater des fichiers txt.
Au préalable je fais un test sur un petit fichier qui comporte un mot,
une ligne vide, et 2 autres mots (au total 26 caractères). La commande
ASC produit une liste de 26 codes, mais point de retour chariot, ni de
line feed.
Je suppose que tu lis ton fichier ligne à ligne avec line input.
Mieux, je suppose que ton code ressemble à s'y méprendre à ceci:
Dim f As Integer
Dim s As String
Dim i As Integer
f = FreeFile
Open "c:test.txt" For Input As #f
While Not EOF(f)
Line Input #f, s
For i = 1 To Len(s)
Debug.Print Asc(Mid$(s, i, 1)) & " ";
Next i
Wend
Debug.Print
Close #f
J'ai aussi créé un fichier (test.txt) qui contient exactement ceci:
(c'est comme le tien) :
Quand tu ouvres un fichier avec Open ... for Input ...
et que tu fais des Line Input, et bien les caractères
de saut de lignes ne sont pas lus. (si tu fais du C, c'est
en fait l'inverse d'un fgets() qui lui retourne tout, fin
de ligne compris).
Donc, si tu veux explicitement les fins de lignes, il te faut lire
ton fichier en binaire et traiter le buffer.
Voici par exemple :
Dim f As Integer
Dim i As Integer
Dim buffer As String
Dim FileSize As Long
f = FreeFile
Open "c:test.txt" For Binary As #f
FileSize = LOF(f)
buffer = Space$(FileSize)
Get #f, , buffer
Close #f
For i = 1 To FileSize
Debug.Print Asc(Mid$(buffer, i, 1)) & " ";
Next i
Debug.Print
Super : j'ai maintenant bien mes 13 10 aux bons endroits :-)
Si tu veux en savoir plus sur les manips de fichiers, tu peux
voir les articles suivants de la FAQ :
http://faq.vb.free.fr/index.php?question5
http://faq.vb.free.fr/index.php?question9
http://faq.vb.free.fr/index.php?question4
Ces articles sont détaillés et comprennent des exemples de code
"prêts à l'emploi".
Merci pour ta réponse. Mais justement je n'obtiens pas ce résultat. Je veux écrire un petit programme pour reformater des fichiers txt. Au préalable je fais un test sur un petit fichier qui comporte un mot, une ligne vide, et 2 autres mots (au total 26 caractères). La commande ASC produit une liste de 26 codes, mais point de retour chariot, ni de line feed.
Je suppose que tu lis ton fichier ligne à ligne avec line input. Mieux, je suppose que ton code ressemble à s'y méprendre à ceci:
Dim f As Integer Dim s As String Dim i As Integer
f = FreeFile Open "c:test.txt" For Input As #f While Not EOF(f) Line Input #f, s For i = 1 To Len(s) Debug.Print Asc(Mid$(s, i, 1)) & " "; Next i Wend Debug.Print Close #f
J'ai aussi créé un fichier (test.txt) qui contient exactement ceci: (c'est comme le tien) :
Quand tu ouvres un fichier avec Open ... for Input ... et que tu fais des Line Input, et bien les caractères de saut de lignes ne sont pas lus. (si tu fais du C, c'est en fait l'inverse d'un fgets() qui lui retourne tout, fin de ligne compris).
Donc, si tu veux explicitement les fins de lignes, il te faut lire ton fichier en binaire et traiter le buffer. Voici par exemple :
Dim f As Integer Dim i As Integer Dim buffer As String Dim FileSize As Long
f = FreeFile Open "c:test.txt" For Binary As #f FileSize = LOF(f) buffer = Space$(FileSize) Get #f, , buffer Close #f
For i = 1 To FileSize Debug.Print Asc(Mid$(buffer, i, 1)) & " "; Next i Debug.Print
Super : j'ai maintenant bien mes 13 10 aux bons endroits :-)
Si tu veux en savoir plus sur les manips de fichiers, tu peux voir les articles suivants de la FAQ : http://faq.vb.free.fr/index.php?question5 http://faq.vb.free.fr/index.php?question9 http://faq.vb.free.fr/index.php?question4
Ces articles sont détaillés et comprennent des exemples de code "prêts à l'emploi".