Philippe_judo
Messages postés19Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention 6 mai 2015
-
20 déc. 2011 à 22:40
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
21 déc. 2011 à 07:51
Bonjour,
Voici un fichier http://dl.dropbox.com/u/32606684/Pi%C3%A8ce2012.SLDPRT qui, une fois ouvert en format texte, donne la version dans laquelle il a été créé (rechercher "v e r s i o n" (attention aux espaces) et vous devriez trouver "5 0 0 0". Comment puis-je trouver ce nombre avec vb.net? J'ai essayé plusieurs chose et la commande qui me donne ce qui se rapproche le plus de ce que je cherche est "System.IO.File.ReadAllText("P:\Dropbox\Trouver version fichier Solidworks\Pièce2012.SLDPRT", System.Text.Encoding.UTF7)". Cepandant, je ne réussis pas à me rendre au bout du fichier : je lis quelques caractères (peut-être une ligne?) et il ne trouve plus rien. Ce qui est étrange par contre c'est que si je le sauve en txt (avec la commande "saveas" standard, parce qu'avec la commande "write", la sauvegarde se fait mais il ne me donne pas les bons caractères), je suis capable d'effectuer ma recherche avec Console.ReadLine.
Je passe peut-être du coq à l'âne mais j'ai essayé bien des choses et ça n'a pas fonctionné.
NHenry
Messages postés15151Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 septembre 2024159 20 déc. 2011 à 22:57
Bonjour,
"v e r s i o n", ce ne sont pas des espaces, mais des caractères null (ASCII=0)
L'encodage est UTF16.
(Je n'ai pas téléchargé le fichier, mais je pense que c'est cela)
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 21 déc. 2011 à 07:51
Lisant rapidement les specs, tu voit que le fichier fonctionne par secteurs de 512 octets.
l'entête fait 512
s'ensuit de table de chainage,
le Root entry (le vrai) décrit comme le 'vrai' secteur 0
la version, que tu cherches a récupérer se trouvent dans le secteur suivant (dans l'ordre du fichier, je ne tiens pas compte de la table de chainage des secteurs)...
passés 80 octets, on tombe sur le CLSID(16 octets) du secteur.
Dans ton cas, c'est :
30 3D A3 83 C5 27 CE 11 BF D4 00 40 05 13 BB 57
Viennent ensuite dates, heures et differents flags.
au 129eme octet de ton secteur, tu as le nom de la propriété, sur 64 octets (Unicode), suivie de la taille reelle du nom, sur 2 octets