PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 12 sept. 2008 à 14:00
la freetextbox a légèrement modifié l'affichage mais.... ce n'est que de l'affichage
et compare avec ta capture, il y a peu de différence.
il faut travailler sur la valeur ascii des caractères, avec les infos que j'avais "supposé" (puisque c'est bien çà )
en décodant j'ai vu le décalage qu'il y avait entre le résultat date et l'heure de ton CSV. à la base je supposais bien une différence, à savoir depuis 1990, mais j'avais encore 20ans et 2 heures d'erreur, donc...
une fois que tu as la bonne date de départ et que tu sais que seuls les caractères 3 4 et 7 ne changent pas, c'est même plus amusant ^^
(c'est plus des indices là..., t'as directement la réponse )
ps :
la totalité du code (dont des morceaux
inutiles + debug.print) fait moins de 50 lignes, et je ne pense
vraiment pas que çà soit alors une source qui vaille la peine d'être
déposée
++
(ps : lien signature corrigé )
<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
moimatthieu
Messages postés68Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention 6 mars 2010 12 sept. 2008 à 16:39
La 6ème colonne est bien celle du temps : +30 à chaque fois mais ma table à partir de 0x80 n'est pas bonne donc je peux pas faire la conversion.
PCPT tu te bases sur quelle table ? Pour 0x8D j'ai un "" alors que je penses que je devrais avoir un "?"
Vous n’avez pas trouvé la réponse que vous recherchez ?
arrête de comparer avec le caractère AFFICHé, tant dans ta fenêtre que dans ma trace....
on parle directement du fichier, et pas non plus de l'affichage sous notepad ou sous fenêtre MSDOS......
tu étais bien parti avec ta 2e capture :
les premières lignes ne sont pas utiles à ton export, c'est le header du fichier....
on commence à la ligne 19
tu vois que tous les enregistrement sont séparés par 00
donc tu enlèves les 19 premiers, et tu coupes par tranche de 00
ta première parcelle est bien :
5, 135, 72, 193, 88, 214, 1
la seconde parcelle est bien :
5, 136, 72, 193, 88, 244, 1
tu as ici les valeur en BASE10
1er j'avais dis 0x05 ou 0x06 (plus bas dans le fichier c'est 0x06)
5(b16) = 5(b10)
en 4ème position on a bien 193(b10), notre fameux Á
tu as bien le codage sur 7 caractères représentant chacun une valeur et le dernier semble toujours être le même....
çà devrait plus que t'aider là
<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 15 sept. 2008 à 16:02
arrggg c'est pas fini? ^^
tu as pourtant tous les éléments...
reprenons :
tu as besoin de trouver :
date = > MM/DD/YY HH:NN:SS
valeur => plus ou moins entre 1400 et 1800
quantité => apparemment = 1
tu arrives à isoler les bons groupes, c'est à dire ne pas tenir compte du header, et découper par paquets de 7 caractères
exemple :
5, 135, 72, 193, 88, 214, 1
réprésentés :
a, b, c, d, e, f, g
nous donne :
09/05/08 18:05:12, 1415, 1
encore des indices? OK :
la valeur est composée par
a, b
la date (complète) est composée par un calcul entre
c, d, e, f
et le
#1/1/1970 02:00:00#
la quantité est la VALEUR ASCII ETENTUE (tu le savais déjà) de
g
si dans un fichier tu devais écrire que des valeurs comprises entre 1 et 255 , et que tu voulais que le fichier prenne le moins de place, comment ferais-tu?
tu enregistrerais avec un carac de séparation?
genre...
5:1:98:254:28:44:7
ici 7 "valeurs" prennent 18 "carac". ces 7 valeurs pourraient occuper de 13 (
1:
1:
1:
1:
1:
1:
1
) à 27(
255:
255:
255:
255:
255:
255:
255
) caractères..., peu judicieux
ce qui a été fait dans le fichier est non pas de stoquer une valeur mais le caractère acsii représentant la valeur
donc ta chaine de 7 valeurs, composées de 1 ou 255 ou 133 ou autre, ne prend QUE 7 caractères. pas besoin de séparateur....
seulement on a des valeurs plus grandes que 255, ce qui donne des groupes, comme
a, b
reprenons le :
a, b (5, 135)
doit nous donner
1415
(cf fichier)
comment représenter une valeur > 255 ?
de la même manière
256 par exemple, c'est 255 + 1
mais en sachant la position, on sait que la valeur de gauche sert à factoriser celle de droite
donc 1 sert à nous dire qu'on a déjà 1 fois la valeur max du précédent
donc 1 + 1 nous suffit à savoir que c'est 1*255 & 1
pourquoi?
pour représenter une valeur encore plus grande
si on veut représenter 511, on ne va pas mettre 255 & 255 & 1 (qui prend alors 3 caractères)
juste 2 & 1
on détaillant encore plus, çà veut dire que chaque valeur prend le facteur 255 selon sa position
2 & 1, c'est
2* (255^1) => 2*255 = 510
+
1* (255^0) => 1*1 = 1
= 511
alors pourquoi ici a-t'on une erreur?
rien n'oblige à ce que 255 çà soit la bonne référence :)
à savoir qu'ici c'est presque quand même le cas ^^
le 0 pouvant être représenté, il faut le compter....., ce qui fait 256 (table ascii étendue)
255 était mon exemple au dessus seulement...., cf "
si dans un fichier tu devais écrire que des valeurs comprises entre 1 et 255 "
moimatthieu
Messages postés68Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention 6 mars 2010 16 sept. 2008 à 12:06
Bon ben je suis un très gros boulet :( °_°" : depuis hier je confond MM/JJ/AA (09/05/08) et JJ/MM/AA (05/09/08) donc maintenant je me retrouve avec le 257ème jour (13 septembre) au lieu du 05 septembre. Problème des années bisextiles ? J'ai compté 10 années bisextiles depuis 1970 alors que je n'ai qu'une différence de 8. bizarre !!!
moimatthieu
Messages postés68Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention 6 mars 2010 16 sept. 2008 à 13:48
Si je compte 8 jours en plus pour les années bissextiles, je retombe bien sur le 09/05/08. Sinon j'arrive au 09/13/08 à la bonne heure (-2h du T0 : 16 --> 18)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 17 sept. 2008 à 18:20
bon çà me chagrinait un peu quand même....
j'ai refais le code
il n'y a plus aucune erreur. le bug venait du fait que certains groupes contiennent des "00", ce qui coupe alors la chaine à tort
il faut donc compter par groupes de X carac, et non couper selon ces "00"...
tu devrais ne plus avoir aucun bug de cette manière
ps : code refait => 18 lignes :p
ps : pense à valider la ou les réponses qui t'ont permis de résoudre ton problème (s'il est maintenant résolu ^^)
ps : tu trouveras des exemples de recherche récursive sur www.codyx.org
++
<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
moimatthieu
Messages postés68Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention 6 mars 2010 11 sept. 2008 à 15:11
Bonjour à tous
Mon message précédent semble ne pas être corectement passé donc je le remets :
Je vais essayer d'être clair dans mes explications :
Je travail sur une application indutrielle qui comporte un afficheur Magelis XBT qui stocke ses données que nous exportons ensuite via une clé USB. Nous récupérons ainsi des fichiers .dat que nous devons convertir en format .csv via un logiciel sous Copyright Schneider. Ce que nous souhaitons faire c'est faire un programme VB qui convertisse les données afin de pouvoir faire tourner ce logiciel qui n'aura pas les logiciels Télémécanique installés.
Le problème que j'ai est au niveau du format du fichier .dat. Si j'ai réussi a mettre la photo ci-dessous, vous pouvez voir à droite ce que j'obtiens quand je lis le fichier .dat (des trèfles, coeurs, apostrophes, etc) à partir de mon programme et à gauche le résultat que j'aurai du obtenir.
Je penses que j'ai un problème de formatcde fichier. Je lis mon fichier via les les commandes suivantes :
Dim readText() As String = File.ReadAllLines(lieu, Encoding.UTF8)
For Each s In readText
J'ai essayé les codages ASCII, UTF7, UTF8, UTF32, Unicode et BigEndianUnicode mais je n'ai pas trouvé mon bonheur.
Quelqu'un peut'il m'aider ?
Désolé je peux plus remettre l'image :(. Je peux toute fois l'envoyer par mail à tous ceux qui me le demanderont.
moimatthieu
Messages postés68Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention 6 mars 2010 12 sept. 2008 à 10:56
Salut
A l'heure où tu as envoyé ton précédent message j'étais dans le car entre mon boulot et mon domicile (1h30), voilà pourquoi je n'ai pas répondu.
Merci pour l'aide que tu m'as déjà apporté mais il y a encore plusieurs choses que je ne comprends pas :
Comment as-tu obtenu ce type d'affichage : ^HÁXô ?? ça ne vient pas de chez moi et je n'arrive pas à afficher de telles choses.
Comment sais-tu que la base c'est celle du 1er jnvier 1970 à 2h ??? Il faut que je compte d'un coté le nombre de jour depuis le 1er janvier 1970 et de l'autre les secondes à partir de 2h jusqu'à mon heure ?
Je n'ai toujours pas réussi à comprendre le codage. Les seules choses que je penses avoir vu ce sont les 2èmes et les 6èmes caractères qui semblent varier respectivement en fonction de l'unité de la donnée et des secondes. J'ai remarqué également le changement du 4ème caractère passant de X à Y au début puis à Z un petit peu plus tard, mais sur quel changement, mystère !
Si j'arrive à recréer ce convertisseur de m**** et que mon patron est d'accord, je déposerais ici le code.
moimatthieu
Messages postés68Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention 6 mars 2010 12 sept. 2008 à 14:33
Heu ... je débutes en VB enfin plutôt VB.NET puisque j'utilise Visual Studio 2008 donc il risque plutôt d'y avoir 150 à 200 lignes avant que ça ne fonctionne et que je ne fasse le ménage :$.
Tu dis la "freetextbox", c'est pas du VB.NET ça ? Si ? Je la trouve pas dans l'aide.
Le problème que j'ai depuis le début c'est que je n'arrive pas à trouver les bonnes valeurs ascii puisque je n'ai pas la bonne table : dans la mienne je n'ai pas les coeurs, carrés, etc. J'utilisais celle-ci jusque là : http://www.table-ascii.com/ mais on est pas en ascii, c'est ça ?*
Un très très grand merci déjà de ton aide .... même si sans la bonne table j'arrive pas à avancer :(
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 12 sept. 2008 à 14:57
freetextbox c'est la zone ici dans laquelle je te réponds en html ^^
elle a pu changer l'affichage puisque çà dépend de la typo, mais comme dit, on est bien en ASCII standart
donc ton 4e caractère
Á --> 193
, oui
par contre il n'y a aucun
127
en 1er carac...
<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp