Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1819 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Programme VB6 traduction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programme VB6 traduction

n°2021391
Loarwen
Posté le 06-09-2010 à 12:15:46  profilanswer
 

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

mood
Publicité
Posté le 06-09-2010 à 12:15:46  profilanswer
 

n°2021452
Xxxaaavvv
Posté le 06-09-2010 à 18:11:24  profilanswer
 

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.
 
 
 
 
 

n°2021453
Xxxaaavvv
Posté le 06-09-2010 à 18:12:58  profilanswer
 

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
n°2023108
Loarwen
Posté le 15-09-2010 à 16:28:13  profilanswer
 

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...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Programme VB6 traduction

 

Sujets relatifs
un programme en python appelle une fonction C .. ?création d un petit programme
crée un de programme pour envoyé des mails[VB6] Connexion ADO à Excel.
programme pour créer organigramme[DIVERS] Auto execution d'un programme à l'ouverture d'un fichier zip
programme débutant sur les chaînes.VB6 Peut on faire arret sur toute erreur ?
pourquoi le programme html &css change selon le navigateurImpossible d'executer un programme après compilation (DLL manquante)
Plus de sujets relatifs à : Programme VB6 traduction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR