|
Iniciado por eriktuz, set., 25 2022 12:00 AM - 15 respostas |
| |
| | | |
|
| |
Publicado em setembro, 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 |
| |
| |
| | | |
|
| | |
| |
Publicado em setembro, 25 2022 - 7:33 PM |
| |
| |
| | | |
|
| | |
| |
Publicado em setembro, 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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.398 mensagems Popularité : +227 (347 votes) |
|
Publicado em setembro, 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 tourneMensagem modificada, setembro, 25 2022 - 8:17 PM |
| |
| |
| | | |
|
| | |
| |
Publicado em setembro, 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. |
| |
| |
| | | |
|
| | |
| |
Membro registado 2.653 mensagems Popularité : +93 (137 votes) |
|
Publicado em setembro, 26 2022 - 8:50 AM |
@eriktuz, Pourrais tu, au moins fournir ton code du bouton. |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.398 mensagems Popularité : +227 (347 votes) |
|
Publicado em setembro, 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 tourneMensagem modificada, setembro, 26 2022 - 9:59 AM |
| |
| |
| | | |
|
| | |
| |
Publicado em setembro, 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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 2.653 mensagems Popularité : +93 (137 votes) |
|
Publicado em setembro, 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. |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.398 mensagems Popularité : +227 (347 votes) |
|
Publicado em setembro, 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 tourneMensagem modificada, setembro, 27 2022 - 8:52 AM |
| |
| |
| | | |
|
| | |
| |
Publicado em setembro, 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(` |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.398 mensagems Popularité : +227 (347 votes) |
|
Publicado em setembro, 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 |
| |
| |
| | | |
|
| | |
| |
Publicado em setembro, 28 2022 - 3:13 PM |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.398 mensagems Popularité : +227 (347 votes) |
|
Publicado em setembro, 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 |
| |
| |
| | | |
|
| | |
| |
Publicado em setembro, 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

|
| |
| |
| | | |
|
| | |
| |
Publicado em setembro, 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 |
| |
| |
| | | |
|
| | | | |
| | |
|