OVH Cloud OVH Cloud

probleme Put # avec long

2 réponses
Avatar
moi
Salut,

vola, j'ai le probleme suivant. Je tente d'ecrire dans un fichier des
offsets avec un variable declarer comme suit:

Dim off as long

je fait ensuite dans le fichier ouvert

put #1, , off

Mais quand je lis mon fichier a l'aide de Hex WorkShop et la je constate que
la variable n'a pas ete correctement ecrite...

bref pour une valuer de 32 par exemple j'obtiens

0018 00

y a t'il une astuce pour ecrire a coup sur un Long de 4 octets ?????

Merci de votre aide

2 réponses

Avatar
François Picalausa
"moi" a écrit dans le message de
news:bptegn$mkp$
Salut,

vola, j'ai le probleme suivant. Je tente d'ecrire dans un fichier des
offsets avec un variable declarer comme suit:

Dim off as long

je fait ensuite dans le fichier ouvert

put #1, , off

Mais quand je lis mon fichier a l'aide de Hex WorkShop et la je
constate que la variable n'a pas ete correctement ecrite...

bref pour une valuer de 32 par exemple j'obtiens

0018 00

y a t'il une astuce pour ecrire a coup sur un Long de 4 octets ?????

Merci de votre aide



Bonjour/soir,

Peut-on voir tout le code d'écriture?
A priori, en ouvrant en mode binaire, les long sont toujours enregistré sur
4 octets

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
moi
Voili, voila...


Dim fname, fichier As String
Dim curoff as Long
Dim i As Integer

curoff = 0 '*** initialise curoff ***
none = 0 '*** offset vide pour fichier vide ***

fname = txtOptionName.Text & ".xnx"

'*** on cree le fichier ***
fichier = App.path & "" & fname

If FileExists(fichier) Then
rep = MsgBox("Le fichier " & fname & " existe" & vbCrLf &
"Voulez-vous vraiment le remplacer", vbQuestion + vbYesNo, "Remplacer le
fichier")
If rep = vbYes Then
Kill fichier
Else
MsgBox "Compilation annulée", vbInformation + vbOKOnly
Exit Function
End If
End If

'*** bien maintenant on le remplis ***

hFile = FreeFile
Open fichier For Binary As #hFile

'*** ecriture de la signature ***

Put #hFile, , "_XNXXNX_"

'*** reserver la table d'offset ***

offs = repFiles.ListCount + 4

'*** calcul et ecriture des offsets ***
'*** L'offset est égale à :
'*** la taille du fichier concerné
'*** + la taille de la signatue 6 octets
'*** + la taille de tous les offset (4 octets par
offset * offs)
'***
curoff = 8 + (4 * offs)

If repFiles.ListCount > 0 Then
For off = 0 To 0 'repFiles.ListCount - 1

Put #hFile, , curoff
curoff = curoff + FileLen(repFiles.List(off))
Next off
End If

'*** offset pour le fichier 0 ***
If txtFichier(0).Text <> "" Then
Put #hFile, , curoff
curoff = curoff + FileLen(txtFichier(0).Text)
Else
Put #hFile, , none
End If

'*** offset pour le fichier 1 ***
If txtFichier(1).Text <> "" Then
Put #hFile, , curoff
curoff = curoff + FileLen(txtFichier(1).Text)
Else
Put #hFile, , none
End If

'*** offset pour le fichier 2 ***
If txtFichier(2).Text <> "" Then
Put #hFile, , curoff
curoff = curoff + FileLen(txtFichier(2).Text)
Else
Put #hFile, , none
End If

'*** offset pour le descriptif ***
If txtFichier(3).Text <> "" Then
Put #hFile, , curoff
curoff = curoff + FileLen(txtFichier(3).Text)
Else
Put #hFile, , none
End If

'*** Fichiers ***
buffer = ""
If repFiles.ListCount > 0 Then
For off = 0 To repFiles.ListCount - 1

buffer = FileRead(repFiles.List(off))

Put #hFile, , buffer

Next off
End If

Close #hFile

Compile = True '*** ok tout c'est bien passe




"François Picalausa" a écrit dans le message de
news:
"moi" a écrit dans le message de
news:bptegn$mkp$
> Salut,
>
> vola, j'ai le probleme suivant. Je tente d'ecrire dans un fichier des
> offsets avec un variable declarer comme suit:
>
> Dim off as long
>
> je fait ensuite dans le fichier ouvert
>
> put #1, , off
>
> Mais quand je lis mon fichier a l'aide de Hex WorkShop et la je
> constate que la variable n'a pas ete correctement ecrite...
>
> bref pour une valuer de 32 par exemple j'obtiens
>
> 0018 00
>
> y a t'il une astuce pour ecrire a coup sur un Long de 4 octets ?????
>
> Merci de votre aide

Bonjour/soir,

Peut-on voir tout le code d'écriture?
A priori, en ouvrant en mode binaire, les long sont toujours enregistré


sur
4 octets

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com