Programme VB6 traduction

Programme VB6 traduction - VB/VBA/VBS - Programmation

Marsh Posté le 06-09-2010 à 12:15:46    

Bonjour à tous,
 
J'ai un programme en VB6 que j'essaye de traduire. En effet, je ne fais que du C (à un petit niveau)
et le VB 6 m'était complètement inconnu.   :??:  
Je suis donc allée sur pas mal de tutoriaux pour essayer de comprendre comment ca marche.
Je vous poste donc le programme avec mes commentaires (sur ce que j'ai compris ou cru comprendre...)
Le but de ce programme est de prendre un fichier à proiri biniare et de le convertir sous un format exploitable comme excel.
Si on devait mettre ce fichier dans un tableau celui-ci aurait 64 colonnes et un nombre de lignes inconnues.
Mon but à moi serait de le faire sous C mais ca c'est autre chose...
Merci d'avance!
 
 
 
Option Explicit
Dimm WithEvents xlobj As Excel.Application
 
Private Sub Command1_Click()
 
 
Dim i, j, k, x, l As Integer
X=0
Dim nbProj As Integer
 
DimnumRecords
numRecords = -1
Dim bytbuffer() As Byte   //Creation d'un tableau dont les cellules sont de taille 1 octet
Dim sinArray() As single              //SinArray est un entier
Dim convertedArray() As single  //convertedArray est un entier
 
Dim nomFichier, nomFichier2
Dim ExcelAppli As object
Dim NewXlFile As Object
 
Set ExcelAppli = CreateObject("Excel.Application" )
set NewXlFile = ExcelAppli.workbooks.Add
 
Open "c:\TEMP\converted.sin" For Binary As #1  //Ouvrir le fichier converted.sin en mode binaire
Open "c:\TEMP\aconvertir.sin" For Binary As #2  //Ouvrir le fichier aconvertir.sin en mode binaire
 
Do until EOF(2)      // Faire jusqu'à la fin du fichier2
 numRecords = numRecords + 1
 reDim Preserve sinArray(numRecords)  // ?  
 ReDim Preserve convertedArray(numRecords) //?
 Redim bytbuffer((numRecords + 1) * 4)  //J'imagine qu'on remplit le tableau bytbuffer
       //mais de quelle facon?
 
 Get #2, , sinArray(numRecords)   //?
 For l = 0 To 3
  Get #2, numRecords * 4 +l +1, bytbuffer          // ?
 Next l  
 For j = 0 To 3
  Put#1, numRecords * 4 + 1, bytbuffer(3-j)       //?
 Next j
 
  Get #1, numRecords * 4 + 1, convertedArray(numRecords) //?
 
Loop
ReDim table(numRecords, 64)    //Nouvelle dimension pour table
 
Close#2
Close#1
 
k=0
Do while k< numRecords -1
 For i=0 To numRecords /64 -1
 For j=0 To 63
 Table(i,j) = convertedArray(k)
 NewXLFile1.Sheets("Feuil1" ).Cells(i +1, j + 1).Value = Table(i,j) //On remplit le fichier excel avec le tableau table
 
k= k +1
Next j
Next i
Loop
MsgBox ("The conversion is finished !" )
nomFichier = "c:\TEMP\test"
NewXLFile1.SaveAs Left(nomFichier, Len(nomFichier)) & "xls"  //Enregistrement fichier xls
 
NewXLFile1.Close False
ExcelAppli.Quit
Set NewXlFile1 = Nothing
Set ExcelAppli = Nothing
 
End sub

Reply

Marsh Posté le 06-09-2010 à 12:15:46   

Reply

Marsh Posté le 06-09-2010 à 18:11:24    

donc la tu veux qu'on t'explique ce que fait ce programme ?
 
Il ouvre excel (un nouveau classeur)
Ouvre deux fichier binaire
lis ces deux fichier pour placer les donner dans une variable tableau
ferme les deux fichier
 
remplis le classeur Excel avec la variable tableau
"The conversion is finished !"
fait un "save as" sur le nouveau classeur.
 
 
 
 
 

Reply

Marsh Posté le 06-09-2010 à 18:12:58    

Redim bytbuffer((numRecords + 1) * 4)  //J'imagine qu'on remplit le tableau bytbuffer  
       //mais de quelle facon?  
 
non c'est un redimensionnement de tableau
VB ne sais pas faire de tableau de taille variable
on est obligé de le redéclarer si on veux l'agrandir.
 
 
les fonction de lecture//écriture sont ici :
(après pourquoi le fichier est lu de cette manière, je ne sais pas.)
 
 Get #2, , sinArray(numRecords)   //?  
 For l = 0 To 3  
  Get #2, numRecords * 4 +l +1, bytbuffer          // ?  
 Next l  
 For j = 0 To 3  
  Put#1, numRecords * 4 + 1, bytbuffer(3-j)       //?  
 Next j  
 Get #1, numRecords * 4 + 1, convertedArray(numRecords) //?

Message cité 1 fois
Message édité par Xxxaaavvv le 06-09-2010 à 18:15:01
Reply

Marsh Posté le 15-09-2010 à 16:28:13    

Xxxaaavvv a écrit :

Redim bytbuffer((numRecords + 1) * 4)  //J'imagine qu'on remplit le tableau bytbuffer  
       //mais de quelle facon?  
 
non c'est un redimensionnement de tableau
VB ne sais pas faire de tableau de taille variable
on est obligé de le redéclarer si on veux l'agrandir.
 
 
les fonction de lecture//écriture sont ici :
(après pourquoi le fichier est lu de cette manière, je ne sais pas.)
 
 Get #2, , sinArray(numRecords)   //?  
 For l = 0 To 3  
  Get #2, numRecords * 4 +l +1, bytbuffer          // ?  
 Next l  
 For j = 0 To 3  
  Put#1, numRecords * 4 + 1, bytbuffer(3-j)       //?  
 Next j  
 Get #1, numRecords * 4 + 1, convertedArray(numRecords) //?


 
Merci!!
Mais justement c'est la manière de lire/écrire que je n'arrive pas à cerner...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed