Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.

Tip of the Day
Language: VB5,VB6
Expertise: Intermediate
Sep 6, 2001



Building the Right Environment to Support AI, Machine Learning and Deep Learning

SetFileSize - Trim or extend a file's size

Option Explicit

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal _
    lpFileName As String, ByVal dwDesiredAccess As Long, _
    ByVal dwShareMode As Long, lpSecurityAttributes As Any, _
    ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _
    ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As _
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, _
    ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, _
    ByVal dwMoveMethod As Long) As Long
Private Declare Function SetEndOfFile Lib "kernel32" (ByVal hFile As Long) As _
Private Const FILE_BEGIN = 0
Private Const OPEN_EXISTING = 3
Private Const GENERIC_WRITE = &H40000000

' Extend or trim a file to a given length.
' If the file is extended, the added bytes are undefined

Public Sub SetFileSize(ByVal FileName As String, ByVal newSize As Long)
    Dim fileHandle As Long
    ' open the file, get the handle
    fileHandle = CreateFile(FileName, GENERIC_WRITE, 0&, ByVal 0&, _
        OPEN_EXISTING, 0&, 0&)
    ' raise error if not found
    If fileHandle = INVALID_HANDLE_VALUE Then
        Err.Raise 53     ' This is "file not found"
    End If
    ' move the file pointer to new position, raise error if fails
    If SetFilePointer(fileHandle, newSize, 0&, FILE_BEGIN) = -1 Then
        CloseHandle fileHandle
        Err.Raise 5     ' this is "illegal function call"
    End If
    ' attempt to set the end of file, raise error
    If SetEndOfFile(fileHandle) = 0 Then
        CloseHandle fileHandle
        Err.Raise 5     ' this is "illegal function call"
    End If
    ' close the file and exit
    CloseHandle fileHandle
End Sub

Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date