|
Started by eriktuz, Sep., 25 2022 12:00 AM - 15 replies |
| |
| | | |
|
| |
Posted on September, 25 2022 - 12:00 AM |
salut
j'avais 2 sai saisie ( text multi ligne )
la premier contient des lignes en hexadecimal , et dans la dousiem je veut convertir saisaisie (1) en buffer dans saisaisie (2) mais pour tout les lignes
j'ai essaie plusieur code mais toujour convert la premier ligne seulment |
| |
| |
| | | |
|
| | |
| |
Posted on September, 25 2022 - 7:33 PM |
| |
| |
| | | |
|
| | |
| |
Posted on September, 25 2022 - 7:35 PM |
eriktuz a écrit :
salut
j'avais 2 sai saisie ( text multi ligne )
la 1er contient des lignes en hexadecimal , et dans la 2em je veut convertir saisaisie (1) en buffer dans saisaisie (2) mais pour tout les lignes
j'ai essaie plusieur code mais toujour convert la premier ligne seulment |
| |
| |
| | | |
|
| | |
| |
Registered member 3,844 messages Popularité : +227 (347 votes) |
|
Posted on September, 25 2022 - 8:07 PM |
Bonjour, eriktuz a écrit :
j'ai essaie plusieur code mais toujour convert la premier ligne seulment
Lesquels ?
La fonction suivante devrait faire l'affaire :
FONCTION HexaVersTexte(saChaineHexa) :chaîne nOffset est un entier saResultat est une chaîne
POUR nOffset=1 _À_ Taille(saChaineHexa) PAS 2 saResultat=ChaîneConstruit("%1%2",saResultat,Caract(Val(saChaineHexa[[nOffset SUR 2]],"x"))) FIN RENVOYER saResultat
-- Il y a peut être plus simple, mais, ça tourneMessage modified, September, 25 2022 - 8:17 PM |
| |
| |
| | | |
|
| | |
| |
Posted on September, 25 2022 - 8:42 PM |
merci pour votre aide mais ca marche pas j'ai recu léerreur suivante:
Les paramètres d'appel du code 'Clic sur BTN_SansNom2' sont incorrects : on attendait 1 paramètres et on en a reçu 0. |
| |
| |
| | | |
|
| | |
| |
Registered member 3,311 messages Popularité : +93 (137 votes) |
|
Posted on September, 26 2022 - 8:50 AM |
@eriktuz, Pourrais tu, au moins fournir ton code du bouton. |
| |
| |
| | | |
|
| | |
| |
Registered member 3,844 messages Popularité : +227 (347 votes) |
|
Posted on September, 26 2022 - 9:56 AM |
eriktuz a écrit :
merci pour votre aide mais ca marche pas j'ai recu léerreur suivante:
Les paramètres d'appel du code 'Clic sur BTN_SansNom2' sont incorrects : on attendait 1 paramètres et on en a reçu 0.
Si tu ne passes pas la chaine à transformer, c'est sûr, tu auras toujours cette erreur. Par ailleurs (nos post ont du se croiser,) si l'espace entre 2 octets n'est pas un espace de mise en forme, il faudra remplacer
PAS 2 par
PAS 3
-- Il y a peut être plus simple, mais, ça tourneMessage modified, September, 26 2022 - 9:59 AM |
| |
| |
| | | |
|
| | |
| |
Posted on September, 26 2022 - 7:20 PM |
MEME PROBLEM
FONCTION HexaVersTexte(SAI_Texte1) :chaîne nOffset est un entier saResultat est une chaîne
POUR nOffset=1 _À_ Taille(SAI_Texte1) PAS 2 saResultat=ChaîneConstruit("%1%2",saResultat,Caract(Val(SAI_Texte1[[nOffset SUR 2]],"X"))) SAI_Texte2 = saResultat FIN RENVOYER saResultat |
| |
| |
| | | |
|
| | |
| |
Registered member 3,311 messages Popularité : +93 (137 votes) |
|
Posted on September, 27 2022 - 7:21 AM |
eriktuz a écrit :
MEME PROBLEM
FONCTION HexaVersTexte(SAI_Texte1) :chaîne nOffset est un entier saResultat est une chaîne
POUR nOffset=1 _À_ Taille(SAI_Texte1) PAS 2 saResultat=ChaîneConstruit("%1%2",saResultat,Caract(Val(SAI_Texte1[[nOffset SUR 2]],"X"))) SAI_Texte2 = saResultat FIN RENVOYER saResultat Si ce code est a l'intérieur du bouton c'est normal que ça ne fonctionne pas Tu dois plutôt écrire Machaine est une chaîne Machaine = HexaVersTexte(SAI_Texte1) SAI_Texte2 = Machaine
Puis tu créer la procédure HexaVersTexte Avec le code de Voroltinquo
Sans abuser , il serait souhaitable de suivre l'autoformation proposé par pcsoft. |
| |
| |
| | | |
|
| | |
| |
Registered member 3,844 messages Popularité : +227 (347 votes) |
|
Posted on September, 27 2022 - 8:30 AM |
On peut même améliorer le code en travaillant directement sur le buffer. Code du bouton :
bufFichier est buffer
bufFichier=fChargeBuffer'(SAI_Fichier) SAI_Hexa=BufferVersHexa(bufFichier) SAI_Texte=BufferVersTexte(bufFichier) BufferVersTexte:
FONCTION HexaVersTexte(bufMonBuffer) :chaîne nOffset est un entier saResultat est une chaîne
POUR nOffset=1 _À_ Taille(bufMonBuffer) PAS 2 saResultat=ChaîneConstruit("%1%2",saResultat,Caract(Val(bufMonBuffer[[nOffset SUR 2]],"x"))) FIN RENVOYER saResultat
Remarque : Il faut éventuellement penser à vérifier le type de codage de texte (UTF 8, UTF 16 (UNICODE pour Windev,) UTF 32) en vérifiant l'existence du BOM (Bit Order Mark, Indicateur d'ordre doctets en français) et son type (little endian,, big endian)
Remarque 2 : La plupart des caractères de contrôle (00 à 0x1F) seront affiché en tant que rectangle sauf 00 (un espace,) 09 (Tabulation) 0A0D (Passage à la ligne et retour en début de ligne) 0C 1B (Pas d'affichage,) Pour les plus courants
-- Il y a peut-être plus simple, mais, ça tourneMessage modified, September, 27 2022 - 8:52 AM |
| |
| |
| | | |
|
| | |
| |
Posted on September, 27 2022 - 5:08 PM |
Merci mon frere
dans le button :
bufFichier est Buffer
bufFichier = fChargeBuffer (SAI_Fichier) SAI_Texte1 = BufferVersHexa(bufFichier) SAI_Texte2 = HexaVersTexte(bufFichier)
et je criée une procedure locale avec le code:
FONCTION HexaVersTexte(bufMonBuffer) :chaîne nOffset est un entier saResultat est une chaîne
POUR nOffset=1 _À_ Taille(bufMonBuffer) PAS 2 saResultat=ChaîneConstruit("%1%2",saResultat,Caract(Val(bufMonBuffer[[nOffset SUR 2]],"x"))) FIN RENVOYER saResultat
pour le hexa est tres bien mais pour le buffer je recu une seul ligne comme ca:
vF(` |
| |
| |
| | | |
|
| | |
| |
Registered member 3,844 messages Popularité : +227 (347 votes) |
|
Posted on September, 28 2022 - 9:00 AM |
De mon côté ça fonctionne. Comme je l'expliquais plus haut, cela peut toutefois provenir des caractères de contrôle (e.g. 0x04 :EOT, 0x08 : BS, 0x24: Cancel) qui ne sont pas toujours affichables ou peuvent être interprétés comme tels. 1-Que renvoie
Taille(SAI_Texte2) 2-Une solution peut être de remplacer ces caractères par un caractère affichable (généralement le . (0x2E)) A la volée :
FONCTION HexaVersTexte(bufMonBuffer) :chaîne nOffset est un entier saResultat est une chaîne cCaractèreLu est caractère
POUR nOffset=1 _À_ Taille(bufMonBuffer) PAS 2 cCaractèreLu=Caract(Val(bufMonBuffer[[nOffset SUR 2]],"x")) SI cCaratèreLu<0x40 ALORS cCaractèreLu=0x2E FIN saResultat=ChaîneConstruit("%1%2",saResultat,cCaractèreLu) FIN RENVOYER saResultat
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Posted on September, 28 2022 - 3:13 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 3,844 messages Popularité : +227 (347 votes) |
|
Posted on September, 28 2022 - 7:45 PM |
Le problème venais de la transformation du paramètre de la fonction BufferVersHexa de chaine en buffer. Il faut traiter un élément comme un octet et non comme 2 caractères (e.g pour un variable chaine "37" c'est 2 caractère alors que pour un buffer c'est un numérique) Le code suivant prend en compte ce changement de type
FONCTION BufferVersTexte(bufFichier est un Buffer) :chaîne nOffset est un entier saResultat est une chaîne ocCaractèreLu est octet
POUR nOffset=1 _À_ Taille(bufFichier) ocCaractèreLu=bufFichier[[nOffset]] SI ocCaractèreLu<0x20 ALORS ocCaractèreLu=0x2E FIN saResultat=ChaîneConstruit("%1%2 ",saResultat,Caract(ocCaractèreLu)) FIN RENVOYER saResultat
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Posted on September, 28 2022 - 8:21 PM |
Trés tres bien Mr Voroltinquo vous etes genie le code est marche trés bien ... just un seul problem il ya une espace entre les octes ..comment eviter cette espace
|
| |
| |
| | | |
|
| | |
| |
Posted on September, 28 2022 - 8:30 PM |
OK OK
LE problem de l'espace est regler juste remove l'espace apres ( "%1%2) est manitenant tout va bien
UN GRAND MERCI Monsieur :merci::D |
| |
| |
| | | |
|
| | | | |
| | |
|