Bonjour,
Suite a une demande du Forum, je met a dispo une source qui m'est souvent utile.
Elle permet de créer facilement et rapidement des fichiers de taille arbitraire.
Je m'en sert par exemple lorsque j'ai besoin de calculer la taille d'un fichier, et que cette taille ne tient pas sur un Long...
Source / Exemple :
Private Const CREATE_ALWAYS As Long = 2
Private Const FILE_BEGIN As Long = 0
Private Const GENERIC_WRITE As Long = &H40000000
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetEndOfFile Lib "kernel32.dll" (ByVal hFile As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, ByRef lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Public Function CreateBigFile(ByRef vsFileName As String, ByVal vnSize As Variant) As Boolean
Dim hFile As Long
Dim nHigh As Long
Dim nLow As Long
Dim nTmp As Long
Const hFFFFFFFF = 4294967295#
Const h80000000 = 2147483648#
hFile = CreateFile(vsFileName, GENERIC_WRITE, 0, ByVal 0&, CREATE_ALWAYS, 0, 0)
If hFile <> -1 Then
If CCur(vnSize) > hFFFFFFFF Then
nHigh = Fix(vnSize / hFFFFFFFF)
vnSize = vnSize - CCur(hFFFFFFFF * nHigh)
End If
If CCur(vnSize) > h80000000 Then
nTmp = Fix(vnSize / h80000000)
nLow = vnSize - h80000000 * nTmp
nLow = nLow + nTmp * &H80000000
Else
nLow = CLng(vnSize)
End If
SetFilePointer hFile, nLow, nHigh, FILE_BEGIN
SetEndOfFile hFile
CreateBigFile = True
CloseHandle hFile
End If
End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.