Есть файлик весом 100 гигабайт. (видео Avi)
Необходимо обезать его с конца на 60 гигов. (уснул во время захвата )
Всяки возможные Программы которые предлагают пересохранить файл не подходят , места больше нету.
ЕСть VB код, но он работает только с файлами меньше 4 гигов.
А Как бы кастрировать мой файлик .
имеющийся в загажнике код, представленный ниже, не работает с файлами больше 4 гигов.
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetEndOfFile Lib "kernel32" (ByVal hFile As Long) As Long
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 CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetEndOfFile Lib "kernel32" (ByVal hFile As Long) As Long
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 CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Кнопка0_Click()
Dim hf As Long
hf = CreateFile("f:\file.avi", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
If hf = INVALID_HANDLE_VALUE Then
MsgBox ("Ошибка при открытии"
Else
' Встать на 10 байт от начала
Call SetFilePointer(hf, 1024, 0, FILE_BEGIN)
' Обрезать файл на этом месте
Call SetEndOfFile(hf)
' Теперь длина файла стала 10
Call CloseHandle(hf)
End If
Мне кажеться дело в ресурсах компа, сколько там оперативки итп... 4
гига в оперативу не влезит кешировать процесс долгий наверное поэтому
и загинается код...
Сегодня на свежую голову понял в чем проблема
требуется получить файл 85 899 345 920 или 80 гигов
На Access (я на нем сижу )и на VB тоже вроде - нету таких чисел
во всяком случае если стоку определять так
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
А нельзя второй параметр в функции SetFilePointer объявить как Double и передавать туда тип double? Хотя вряд ли, официально в прототипе long написано...