Moritus
Messages postés130Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention23 novembre 2011
-
21 mars 2007 à 22:59
Moritus
Messages postés130Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention23 novembre 2011
-
27 mars 2007 à 01:28
Bonjour
J'ai des fichiers crée par un de mes logiciels ( pas de moi (1D Stock cutter de astrokettle)) que j'aimerais traité.
Maintenant, j'ai crée un logiciel mais j'aimerais pouvoir allez lire
une ligne dans ce fichier et pouvoir soit enlever ou ajouter...j'ai
réussi avec d'autre type de fichier (Excel) mais je ne sais pas comment
traité les .stc
en fais ce fichier est comme une base de donnée qui contient des
longueur d'aluminium. Avec mon logiciel, j'aimerais savoir si j'ai la
longueur en stock, et enlever ou ajouter une quantité
J'ai écrit aux concepteurs du logiciel et je vous colle la réponse qu'il m'ont envoyer!!
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 21 mars 2007 à 23:34
Salut,
voila toutes tes données sont lues dans un tableau en Long
à toi de savoir à quoi elles correspondent
les modifier, les supprimer, etc... et les recopier dans un autre fichier
Dim T() As Long
Dim i As Integer
Dim nb As Integer
' Lecture
Open "C:\VBdan\Vbtest\pil4040.stc" For Binary As #1
nb = LOF(1) / 4
ReDim T(nb)
For i = 1 To nb
Get #1, , T(i)
Next
Close #1
bigbigmoumou
Messages postés18Date d'inscriptionjeudi 20 mars 2003StatutMembreDernière intervention22 mars 2007 22 mars 2007 à 00:00
Bonsoir,
En regardant ton fichier .stc avec un éditeur hexa et avec les info que le concepteur t'as donné :
Ce fichier se compose d'une suite d'entier long signé (32 bits, soit 4 octets)
Ce qui donne, à partir de l'éditeur hexa, après conversion en décimal :
-55553 -55553 -55553 -55554
-55554 2 0 0
2 -55554 281 37200
1 -55555 0 -55554
38600 1 -55555 0
-55554 50500 1 -55555
0 -55554 53500 1
-55555 0 -55554 68000
1 -55555 0 -55554
-55554 -55554 -55554 -55554
-55554 326058812 208561517 1345601139
1613771896 174155080 1612718201
Les -55554 = Bl+1 servent de fin de ligne.
D'après la strcuture donnée on obtient :
Ligne de Vérif : -55553 -55553 -55553 -55553 -55554 : Toujours la même.
Ligne des coefficient multiplicateur : 2 0 0 2 -55554
=> Colonne 1 : x100
=> Colonne 2 : x1
=> Colonne 3 : x1
=> Colonne 4 : x100
Numéro de Version : 281 => Version 2.81
Ligne 1 de Données : 37200 1 -55555 0 -55554
Ligne 2 de Données : 38600 1 -55555 0 -55554
Ligne 3 de Données : 50500 1 -55555 0 -55554
Ligne 4 de Données : 53500 1 -55555 0 -55554
Ligne 5 de Données : 68000 1 -55555 0 -55554
Ligne de Stop : -55554 -55554 -55554 -55554 -55554 : Toujours ces valeurs
Commentaires :
326058812 208561517 1345601139
1613771896 174155080 1612718201
OU en format text en gros (Je vois paq trop ici):
<Co
men
s>4Px40'Heav
y `
Après faut que tu regardes les données qui apparaissent dans le programme avec ce fichier et faire le lien pour retrouver les valeurs et leur signification.
Moritus
Messages postés130Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention23 novembre 2011 22 mars 2007 à 00:10
Salut et merci pour vos réponse,
Avec le premier message, j'arrive à lire le fichier!!!comprend rien mais ok pour la !!!
La J'ai réalisé que le fichier du liens ne concorde pas avec le screenshot donc je redonne le liens du BON fichier!!!
http://www.erltechnologie.com/54.31.stc
Maintenant, j'ai essayer des multiplication comme mantionné dans la
réponse des concepteurs mais en vain (ne comprenant pas trops comment
faire et koi multiplier
Maintenant avec les explications de [auteurdetail.aspx?ID=72034 bigbigmoumou]je voix un peu mieux la structure interne mais la question est comment jouer avec tous ces chiffre
Je crois que je suis moin avancé que je le croyait!!! en tous cas pour CA!!
Si on oublie pour l'instant(Sans importance) les commentaires
Pouvez-vous me donné une piste à suivre pour mettre les valeur dans un
list box à 4 colonne sachant qu'il ce retrouve ainsi dans le logiciel!
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 22 mars 2007 à 01:12
je te met toute les données dans une ListView (ListBox muticolonnes bof)
à la fin j'ai 6 fois Bl+1 et 7 pour les commentaires, d'où le (nb - 13) si c'est pas toujours vrai il faut trouver une autre méthode, par exemple Size négative peut être
Private Sub Form_Load()
Dim i As Integer
Dim nb As Integer
Dim coef(4) As Long
Dim T() As Long
Dim Ligne As ListItem
For i = 11 To (nb - 13) Step 5
Set Ligne = ListView1.ListItems.Add
Ligne.Text = T(i + 1) / coef(1) If T(i + 2) >0 Then Ligne.SubItems(1) T(i + 2) / coef(2) If T(i + 3) >0 Then Ligne.SubItems(2) T(i + 3) / coef(3) If T(i + 4) >0 Then Ligne.SubItems(3) T(i + 4) / coef(4)
Next
End Sub
Daniel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 22 mars 2007 à 01:37
bon je décale de 1 à cause du numéro de version que j'avais mis dans la ligne suivante
je compte 5 pour le Stop Fin et +5 pour les commentaires d'où le (nb - 10)
mais de toute façon nb tout seul suffirait, à cause du test
For i = 12 To (nb - 10) Step 5
If T(i) < 0 Then Exit For
Set Ligne = ListView1.ListItems.Add
Ligne.Text = T(i) / coef(1) If T(i + 1) >0 Then Ligne.SubItems(1) T(i + 1) / coef(2) If T(i + 2) >0 Then Ligne.SubItems(2) T(i + 2) / coef(3) If T(i + 3) >0 Then Ligne.SubItems(3) T(i + 3) / coef(4)
Next
bigbigmoumou
Messages postés18Date d'inscriptionjeudi 20 mars 2003StatutMembreDernière intervention22 mars 2007 22 mars 2007 à 02:09
Une autre version pour lire ces fichiers.
Il y a quelques tests de vérif supplémentaires mais pas encore complet.
Le commentaire final ressemble fortement au text du haut du tableau, mais il manque certain caractère, étrange...
Private Sub Form_Load()
Dim Donnees() As Long
Dim coef(3) As Long
Dim Version As Long
Dim VersionText As String
Dim Lu As Long
Dim LuText As String
Dim LigneLue As Integer
Dim Tmp As Integer
Dim TmpNb As Integer
Dim Commentaire As String * 100
' Lecture
Open "D:\calcul\54.31.stc" For Binary As #1
ReDim Donnees(LOF(1) / 4, 3)
If LOF(1) >= (4 + 4 + 1) * 4 Then
' - Lecture de la ligne de vérif : 4 premiers long -
For Tmp = 0 To 3
Get #1, , Lu
If Lu <> -55553 Then MsgBox "Erreur dans la ligne Vérif."
Next Tmp
Get #1, , Lu
If Lu <> -55554 Then MsgBox "Erreur dans la ligne Vérif."
' - Lecture des 4 Coefs -
PosLecture = 0
For Tmp = 0 To 3
Get #1, , coef(Tmp)
Next Tmp
Get #1, , Lu
If Lu <> -55554 Then MsgBox "Erreur dans la ligne des Coef"
'- Remise en forme des Coef -
For Tmp = 0 To 3
coef(Tmp) = 10 ^ coef(Tmp)
Next Tmp
'- Affichage des Coef -
MsgBox "Coef : " & coef(0) & " / " & coef(1) & " / " & coef(2) & " / " & coef(3)
' - Lecture du Numéro de Version -
Get #1, , Version
' - remise en forme de la Version -
VersionText = CStr(Version / 100)
' - Affichage de la Version -
MsgBox "Version : " & VersionText
Else
MsgBox "Fichiers invalide : Trop court": End
End If
' - Lecture des Données -
LigneLue = 0
Do While Not EOF(1)
For Tmp = 0 To 3
Get #1, , Donnees(LigneLue, Tmp)
Next Tmp
Get #1, , Lu
If Lu <> -55554 Then MsgBox "Erreur en fin de ligne de données"
' - Test si on vient de lire ou non la ligne de fin de données -
TmpNb = 0
For Tmp = 0 To 3
If Donnees(LigneLue, Tmp) -55554 Then TmpNb TmpNb + 1 Else Exit For
Next Tmp
If TmpNb = 4 Then Exit Do '- On vient de lire la ligne de fin de données -
'- Remise en forme des Données (Coef) -
For Tmp = 0 To 3
If Donnees(LigneLue, Tmp) <> -55555 Then Donnees(LigneLue, Tmp) = Donnees(LigneLue, Tmp) / coef(Tmp)
Next Tmp
'- Affichage des Données -
LuText = ""
For Tmp = 0 To 3
Lu = Donnees(LigneLue, Tmp)
If Lu = -55555 Then
' - Cas de donnée inexistante -
LuText = LuText + "---" & " / "
Else
LuText = LuText + CStr(Lu) & " / "
End If
Next Tmp
MsgBox "Données : Ligne n° " & LigneLue & " : " & LuText
LigneLue = LigneLue + 1
Loop
'- Lecture des Commentaires -
Get #1, , Commentaire
MsgBox "Commentaire : " & Commentaire
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 22 mars 2007 à 02:51
Salut,
toutes les données sont dans le Tableau de l'indice 11 jusqu'à i-1
à partir de i on a le Stop Fin sur 5 puis les commentaires
tu modifies le tableau en ajoutant/supprimant et en décalant les éléments du tableau
sans jamais toucher au début ni à la fin
ensuite tu réécris le Tableau après modification avec Put au lieu de Get
d'où l'intérêt d'avoir un Tableau qui représente le fichier complet
bigbigmoumou
Messages postés18Date d'inscriptionjeudi 20 mars 2003StatutMembreDernière intervention22 mars 2007 22 mars 2007 à 14:55
Bonjour,
Après faudrait voir la méthode de lecture/écriture que le concepteur utilise et les diverses versions.
En effet, un fichier de version 1 ne possédait peut être que 2 colonnes.
Le pas de lecture était donc peut être différent ce qui serait problèmatique pour lire le fichier.
A l'inverse, la version 3 aura peut-être 5 colonnes...
Vu qu'il y a un code de fin de ligne, celà semble être prévu.
Il faudait savoir à quoi servent ces fin de lignes et comment les utiliser, seul le concepteur le sait...
De plus, il faudrait vérifier que le fichier n'est pas endommagé, que les code de vérifs, fin de ligne... soient bien présent.
Etc.
Celà dépend bien sur ce que tu désire faire.
Si c'est juste lire une fois quelques gros fichiers ou si c'est accèder à ce fichier par un autre programme, quelque soit les versions passée (les futurs pouvant ne pas être compatibles)
Moritus
Messages postés130Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention23 novembre 2011 22 mars 2007 à 14:59
Salut, Pour l'instant je prévois rester avec la version actuel du
logiciel et on ne prévois pas changer! donc pour l'instant la version
des fichier va reste la 2.81.