Après avoir tatonné j'ai trouvé une solution qui a l'air de marcher,
mais je voudrais quand même avoir votre avis.
Pour savoir si le texte est OEM, je parcours ce texte caractère par
caractère pour récupérer le code décimal du caractère par
ASC(Caractere) de façon à détecter le code décimal le plus grand
contenu dans le texte.
Si le code décimal est inférieur à 136 je considère que le code du
texte est OEM sinon c'est de l'ANSI
Je teste 136 parce qu'il existe quand même un caractère 130 et un
caractère 135 qui peuvent exister en OEM.
De plus je ne tiens pas compte du code 255
Qu'en pensez-vous ?
Avez-vous mieux à me proposer ?
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
Romuald.besset
Georges Peyre a écrit :
Bonjour,
Après avoir tatonné j'ai trouvé une solution qui a l'air de marcher, mais je voudrais quand même avoir votre avis.
Pour savoir si le texte est OEM, je parcours ce texte caractère par caractère pour récupérer le code décimal du caractère par ASC(Caractere) de façon à détecter le code décimal le plus grand contenu dans le texte.
Si le code décimal est inférieur à 136 je considère que le code du texte est OEM sinon c'est de l'ANSI
Je teste 136 parce qu'il existe quand même un caractère 130 et un caractère 135 qui peuvent exister en OEM. De plus je ne tiens pas compte du code 255
Qu'en pensez-vous ? Avez-vous mieux à me proposer ?
Cordialement
Bonjour Georges, La piste me semble bonne mais rien touvé en VB (ou autre) sur le sujet ? http://www.bellamyjc.org/fr/divers.html Il y a deux scripts (un pour chaque sens) qui devraient t'aider à démonter les différences.
PS : si tu trascrit en WL, je te serais gréé de me faire suivre.
++ R&B www.WDForge.org
Georges Peyre a écrit :
Bonjour,
Après avoir tatonné j'ai trouvé une solution qui a l'air de marcher,
mais je voudrais quand même avoir votre avis.
Pour savoir si le texte est OEM, je parcours ce texte caractère par
caractère pour récupérer le code décimal du caractère par ASC(Caractere)
de façon à détecter le code décimal le plus grand contenu dans le texte.
Si le code décimal est inférieur à 136 je considère que le code du texte
est OEM sinon c'est de l'ANSI
Je teste 136 parce qu'il existe quand même un caractère 130 et un
caractère 135 qui peuvent exister en OEM.
De plus je ne tiens pas compte du code 255
Qu'en pensez-vous ?
Avez-vous mieux à me proposer ?
Cordialement
Bonjour Georges,
La piste me semble bonne mais rien touvé en VB (ou autre) sur le sujet ?
http://www.bellamyjc.org/fr/divers.html
Il y a deux scripts (un pour chaque sens) qui devraient t'aider à
démonter les différences.
PS : si tu trascrit en WL, je te serais gréé de me faire suivre.
Après avoir tatonné j'ai trouvé une solution qui a l'air de marcher, mais je voudrais quand même avoir votre avis.
Pour savoir si le texte est OEM, je parcours ce texte caractère par caractère pour récupérer le code décimal du caractère par ASC(Caractere) de façon à détecter le code décimal le plus grand contenu dans le texte.
Si le code décimal est inférieur à 136 je considère que le code du texte est OEM sinon c'est de l'ANSI
Je teste 136 parce qu'il existe quand même un caractère 130 et un caractère 135 qui peuvent exister en OEM. De plus je ne tiens pas compte du code 255
Qu'en pensez-vous ? Avez-vous mieux à me proposer ?
Cordialement
Bonjour Georges, La piste me semble bonne mais rien touvé en VB (ou autre) sur le sujet ? http://www.bellamyjc.org/fr/divers.html Il y a deux scripts (un pour chaque sens) qui devraient t'aider à démonter les différences.
PS : si tu trascrit en WL, je te serais gréé de me faire suivre.
++ R&B www.WDForge.org
Georges Peyre
Bonjour,
Romuald.besset a pensé très fort :
La piste me semble bonne mais rien touvé en VB (ou autre) sur le sujet ? http://www.bellamyjc.org/fr/divers.html Il y a deux scripts (un pour chaque sens) qui devraient t'aider à démonter les différences.
Ces 2 scripts posent le problème identique à celui existant dans Windev ç'est à dire que les transpositions se font aveuglément ( voir ma remarque du message initial )
PS : si tu trascrit en WL, je te serais gréé de me faire suivre.
PROCEDURE PDetecteOem(TaDetecter est une chaîne) I est un entier WCar est un caractère WcarMax est un entier = 0
POUR I = 1 A Taille(TaDetecter) WCar = Milieu(TaDetecter,I,1) SI Asc(WCar) > WcarMax ALORS SI Asc(WCar) < 255 ALORS WcarMax = Asc(WCar) FIN FIN FIN
SI WcarMax < 137 RENVOYER Vrai SINON RENVOYER Faux FIN
J'utilise alors cette procédure avec la fonction Windev OemVersAnsi de la façon suivante
SI PDetecteOem(WTexteCodeInconnu) = Vrai ALORS TexteAffiche = OemVersAnsi(WTexteCodeInconnu) SINON TexteAffiche = WTexteCodeInconnu FIN
Cordialement
-- Elle est pas belle la vie ?
Bonjour,
Romuald.besset a pensé très fort :
La piste me semble bonne mais rien touvé en VB (ou autre) sur le sujet ?
http://www.bellamyjc.org/fr/divers.html
Il y a deux scripts (un pour chaque sens) qui devraient t'aider à démonter
les différences.
Ces 2 scripts posent le problème identique à celui existant dans Windev
ç'est à dire que les transpositions se font aveuglément ( voir ma
remarque du message initial )
PS : si tu trascrit en WL, je te serais gréé de me faire suivre.
PROCEDURE PDetecteOem(TaDetecter est une chaîne)
I est un entier
WCar est un caractère
WcarMax est un entier = 0
POUR I = 1 A Taille(TaDetecter)
WCar = Milieu(TaDetecter,I,1)
SI Asc(WCar) > WcarMax ALORS
SI Asc(WCar) < 255 ALORS
WcarMax = Asc(WCar)
FIN
FIN
FIN
SI WcarMax < 137
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
J'utilise alors cette procédure avec la fonction Windev OemVersAnsi
de la façon suivante
SI PDetecteOem(WTexteCodeInconnu) = Vrai ALORS
TexteAffiche = OemVersAnsi(WTexteCodeInconnu)
SINON
TexteAffiche = WTexteCodeInconnu
FIN
La piste me semble bonne mais rien touvé en VB (ou autre) sur le sujet ? http://www.bellamyjc.org/fr/divers.html Il y a deux scripts (un pour chaque sens) qui devraient t'aider à démonter les différences.
Ces 2 scripts posent le problème identique à celui existant dans Windev ç'est à dire que les transpositions se font aveuglément ( voir ma remarque du message initial )
PS : si tu trascrit en WL, je te serais gréé de me faire suivre.
PROCEDURE PDetecteOem(TaDetecter est une chaîne) I est un entier WCar est un caractère WcarMax est un entier = 0
POUR I = 1 A Taille(TaDetecter) WCar = Milieu(TaDetecter,I,1) SI Asc(WCar) > WcarMax ALORS SI Asc(WCar) < 255 ALORS WcarMax = Asc(WCar) FIN FIN FIN
SI WcarMax < 137 RENVOYER Vrai SINON RENVOYER Faux FIN
J'utilise alors cette procédure avec la fonction Windev OemVersAnsi de la façon suivante
SI PDetecteOem(WTexteCodeInconnu) = Vrai ALORS TexteAffiche = OemVersAnsi(WTexteCodeInconnu) SINON TexteAffiche = WTexteCodeInconnu FIN
Cordialement
-- Elle est pas belle la vie ?
Eric
Bonjour,
Si je peux me permettre d'optimiser légèrement ta procédure :
PROCEDURE PDetecteOem(TaDetecter est une chaîne)
I est un entier WCar est un caractère WcarMax est un entier = 136 nbCaract est un entier = Taille(TaDetecter) // pour ne pas recalculer la taille à chaque itération bOEM est un booleen = Vrai
POUR I = 1 A nbCaract WCar = Milieu(TaDetecter,I,1) SI Asc(WCar) > WcarMax ALORS SI Asc(WCar) < 255 ALORS bOEM = Faux SORTIR // pour éviter de parcourir tout le fichier si un caractère ANSI est trouvé FIN FIN FIN
RENVOYER bOEM
-- Eric
Bonjour,
Si je peux me permettre d'optimiser légèrement ta procédure :
PROCEDURE PDetecteOem(TaDetecter est une chaîne)
I est un entier
WCar est un caractère
WcarMax est un entier = 136
nbCaract est un entier = Taille(TaDetecter) // pour ne pas recalculer la
taille à chaque itération
bOEM est un booleen = Vrai
POUR I = 1 A nbCaract
WCar = Milieu(TaDetecter,I,1)
SI Asc(WCar) > WcarMax ALORS
SI Asc(WCar) < 255 ALORS
bOEM = Faux
SORTIR // pour éviter de parcourir tout le fichier si un caractère
ANSI est trouvé
FIN
FIN
FIN
Si je peux me permettre d'optimiser légèrement ta procédure :
PROCEDURE PDetecteOem(TaDetecter est une chaîne)
I est un entier WCar est un caractère WcarMax est un entier = 136 nbCaract est un entier = Taille(TaDetecter) // pour ne pas recalculer la taille à chaque itération bOEM est un booleen = Vrai
POUR I = 1 A nbCaract WCar = Milieu(TaDetecter,I,1) SI Asc(WCar) > WcarMax ALORS SI Asc(WCar) < 255 ALORS bOEM = Faux SORTIR // pour éviter de parcourir tout le fichier si un caractère ANSI est trouvé FIN FIN FIN
RENVOYER bOEM
-- Eric
Georges Peyre
Bonjour Eric et merci pour ta participation
Eric a présenté l'énoncé suivant :
Si je peux me permettre d'optimiser légèrement ta procédure :
Ce serait con de ne pas accepter !
WcarMax est un entier = 136
Après avoir fait d'autres essais en réalité il faut tester 159
Ceci est vérifiable si on teste par exemple le texte de l'aide issue de la commande dos cmd.exe /C START /?
I est un entier WCar est un caractère WcarMax est un entier = 159 nbCaract est un entier = Taille(TaDetecter) // pour ne pas recalculer la taille à chaque itération bOEM est un booléen = Vrai
POUR I = 1 A nbCaract WCar = Milieu(TaDetecter,I,1) SI Asc(WCar) > WcarMax ALORS SI Asc(WCar) < 255 ALORS bOEM = Faux SORTIR // pour éviter de parcourir tout le fichier si un caractère ANSI est trouvé FIN FIN FIN
-- Elle est pas belle la vie ?
Bonjour Eric et merci pour ta participation
Eric a présenté l'énoncé suivant :
Si je peux me permettre d'optimiser légèrement ta procédure :
Ce serait con de ne pas accepter !
WcarMax est un entier = 136
Après avoir fait d'autres essais en réalité il faut tester 159
Ceci est vérifiable si on teste par exemple le texte de l'aide issue de
la commande dos cmd.exe /C START /?
I est un entier
WCar est un caractère
WcarMax est un entier = 159
nbCaract est un entier = Taille(TaDetecter) // pour ne pas recalculer
la taille à chaque itération
bOEM est un booléen = Vrai
POUR I = 1 A nbCaract
WCar = Milieu(TaDetecter,I,1)
SI Asc(WCar) > WcarMax ALORS
SI Asc(WCar) < 255 ALORS
bOEM = Faux
SORTIR // pour éviter de parcourir tout le fichier si un caractère
ANSI est trouvé
FIN
FIN
FIN
Si je peux me permettre d'optimiser légèrement ta procédure :
Ce serait con de ne pas accepter !
WcarMax est un entier = 136
Après avoir fait d'autres essais en réalité il faut tester 159
Ceci est vérifiable si on teste par exemple le texte de l'aide issue de la commande dos cmd.exe /C START /?
I est un entier WCar est un caractère WcarMax est un entier = 159 nbCaract est un entier = Taille(TaDetecter) // pour ne pas recalculer la taille à chaque itération bOEM est un booléen = Vrai
POUR I = 1 A nbCaract WCar = Milieu(TaDetecter,I,1) SI Asc(WCar) > WcarMax ALORS SI Asc(WCar) < 255 ALORS bOEM = Faux SORTIR // pour éviter de parcourir tout le fichier si un caractère ANSI est trouvé FIN FIN FIN
-- Elle est pas belle la vie ?
jacques trepp
Georges Peyre a écrit :
Bonjour Eric et merci pour ta participation
Eric a présenté l'énoncé suivant :
Si je peux me permettre d'optimiser légèrement ta procédure :
Ce serait con de ne pas accepter !
WcarMax est un entier = 136
Après avoir fait d'autres essais en réalité il faut tester 159
Ceci est vérifiable si on teste par exemple le texte de l'aide issue de la commande dos cmd.exe /C START /?
I est un entier WCar est un caractère WcarMax est un entier = 159 nbCaract est un entier = Taille(TaDetecter) // pour ne pas recalculer la taille à chaque itération bOEM est un booléen = Vrai
POUR I = 1 A nbCaract WCar = Milieu(TaDetecter,I,1) SI Asc(WCar) > WcarMax ALORS SI Asc(WCar) < 255 ALORS bOEM = Faux SORTIR // pour éviter de parcourir tout le fichier si un caractère ANSI est trouvé FIN FIN FIN
bonjour, juste pour ma culture : à quoi sert le test : SI Asc(WCar) < 255 ALORS un asc de 1 caractère peut-t-il renvoyer une valeur >= 255 ? ... on m'aurait menti ???
-- Jacques Trepp Albygest - 81160 - St Juery jacques-pas de (enlever '-pas de spam' pour me joindre) http://www.albygest.com
Georges Peyre a écrit :
Bonjour Eric et merci pour ta participation
Eric a présenté l'énoncé suivant :
Si je peux me permettre d'optimiser légèrement ta procédure :
Ce serait con de ne pas accepter !
WcarMax est un entier = 136
Après avoir fait d'autres essais en réalité il faut tester 159
Ceci est vérifiable si on teste par exemple le texte de l'aide issue de
la commande dos cmd.exe /C START /?
I est un entier
WCar est un caractère
WcarMax est un entier = 159
nbCaract est un entier = Taille(TaDetecter) // pour ne pas recalculer la
taille à chaque itération
bOEM est un booléen = Vrai
POUR I = 1 A nbCaract
WCar = Milieu(TaDetecter,I,1)
SI Asc(WCar) > WcarMax ALORS
SI Asc(WCar) < 255 ALORS
bOEM = Faux
SORTIR // pour éviter de parcourir tout le fichier si un
caractère ANSI est trouvé
FIN
FIN
FIN
bonjour,
juste pour ma culture :
à quoi sert le test : SI Asc(WCar) < 255 ALORS
un asc de 1 caractère peut-t-il renvoyer une valeur >= 255 ?
...
on m'aurait menti ???
--
Jacques Trepp
Albygest - 81160 - St Juery
jacques-pas de spam.trepp@free.fr
(enlever '-pas de spam' pour me joindre)
http://www.albygest.com
Si je peux me permettre d'optimiser légèrement ta procédure :
Ce serait con de ne pas accepter !
WcarMax est un entier = 136
Après avoir fait d'autres essais en réalité il faut tester 159
Ceci est vérifiable si on teste par exemple le texte de l'aide issue de la commande dos cmd.exe /C START /?
I est un entier WCar est un caractère WcarMax est un entier = 159 nbCaract est un entier = Taille(TaDetecter) // pour ne pas recalculer la taille à chaque itération bOEM est un booléen = Vrai
POUR I = 1 A nbCaract WCar = Milieu(TaDetecter,I,1) SI Asc(WCar) > WcarMax ALORS SI Asc(WCar) < 255 ALORS bOEM = Faux SORTIR // pour éviter de parcourir tout le fichier si un caractère ANSI est trouvé FIN FIN FIN
bonjour, juste pour ma culture : à quoi sert le test : SI Asc(WCar) < 255 ALORS un asc de 1 caractère peut-t-il renvoyer une valeur >= 255 ? ... on m'aurait menti ???
-- Jacques Trepp Albygest - 81160 - St Juery jacques-pas de (enlever '-pas de spam' pour me joindre) http://www.albygest.com
Georges Peyre
Bonjour Jacques,
jacques trepp avait énoncé :
Georges Peyre a écrit : juste pour ma culture : à quoi sert le test : SI Asc(WCar) < 255 ALORS un asc de 1 caractère peut-t-il renvoyer une valeur >= 255 ? ... on m'aurait menti ???
C'est parce que le caractère 255 apparait systématiquement dans les textes ANSI ou OEM renvoyés par les commandes MSDOS et qu'il faut l'ignorer pour que le test sur la valeur décimale 159 soit efficace.
Cordialement
-- Elle est pas belle la vie ?
Bonjour Jacques,
jacques trepp avait énoncé :
Georges Peyre a écrit :
juste pour ma culture :
à quoi sert le test : SI Asc(WCar) < 255 ALORS
un asc de 1 caractère peut-t-il renvoyer une valeur >= 255 ?
...
on m'aurait menti ???
C'est parce que le caractère 255 apparait systématiquement dans les
textes ANSI ou OEM renvoyés par les commandes MSDOS et qu'il faut
l'ignorer pour que le test sur la valeur décimale 159 soit efficace.
Georges Peyre a écrit : juste pour ma culture : à quoi sert le test : SI Asc(WCar) < 255 ALORS un asc de 1 caractère peut-t-il renvoyer une valeur >= 255 ? ... on m'aurait menti ???
C'est parce que le caractère 255 apparait systématiquement dans les textes ANSI ou OEM renvoyés par les commandes MSDOS et qu'il faut l'ignorer pour que le test sur la valeur décimale 159 soit efficace.
Cordialement
-- Elle est pas belle la vie ?
jacques trepp
Georges Peyre a écrit :
Bonjour Jacques,
jacques trepp avait énoncé :
Georges Peyre a écrit : juste pour ma culture : à quoi sert le test : SI Asc(WCar) < 255 ALORS un asc de 1 caractère peut-t-il renvoyer une valeur >= 255 ? ... on m'aurait menti ???
C'est parce que le caractère 255 apparait systématiquement dans les textes ANSI ou OEM renvoyés par les commandes MSDOS et qu'il faut l'ignorer pour que le test sur la valeur décimale 159 soit efficace.
Cordialement
merci, je vais me coucher moins ... ce soir
-- Jacques Trepp Albygest - 81160 - St Juery jacques-pas de (enlever '-pas de spam' pour me joindre) http://www.albygest.com
Georges Peyre a écrit :
Bonjour Jacques,
jacques trepp avait énoncé :
Georges Peyre a écrit :
juste pour ma culture :
à quoi sert le test : SI Asc(WCar) < 255 ALORS
un asc de 1 caractère peut-t-il renvoyer une valeur >= 255 ?
...
on m'aurait menti ???
C'est parce que le caractère 255 apparait systématiquement dans les
textes ANSI ou OEM renvoyés par les commandes MSDOS et qu'il faut
l'ignorer pour que le test sur la valeur décimale 159 soit efficace.
Cordialement
merci,
je vais me coucher moins ... ce soir
--
Jacques Trepp
Albygest - 81160 - St Juery
jacques-pas de spam.trepp@free.fr
(enlever '-pas de spam' pour me joindre)
http://www.albygest.com
Georges Peyre a écrit : juste pour ma culture : à quoi sert le test : SI Asc(WCar) < 255 ALORS un asc de 1 caractère peut-t-il renvoyer une valeur >= 255 ? ... on m'aurait menti ???
C'est parce que le caractère 255 apparait systématiquement dans les textes ANSI ou OEM renvoyés par les commandes MSDOS et qu'il faut l'ignorer pour que le test sur la valeur décimale 159 soit efficace.
Cordialement
merci, je vais me coucher moins ... ce soir
-- Jacques Trepp Albygest - 81160 - St Juery jacques-pas de (enlever '-pas de spam' pour me joindre) http://www.albygest.com