Добрый день!
Подскажите, можно ли в VB скомпилировать файл точно заданного размера (с точностью до байта)?
Sub SetFileSize(Byval sFileName As String, byval lFileSize)
Dim hFile As Long
hFile = FreeFile()
Open sFileName For Binary as #hFile
Select Case LOF(hFile)
Case Is < lFileSize
Put #hFile, LOF(hFile)+1, Space(lFileSize - LOF(hFile))
Close #hFile
Case lFileSize
'Файл и так имеет нужный размер - ничего не делаем.
Case Is > lFileSize
err.Raise 5,,"Желаемый размер файла меньше реального."
End Sub
Хакер писал(а):Неа. В АпиГуиде её нет, поэтому надо самому догадываться, как она работает.
tyomitch писал(а):Хакер писал(а):Неа. В АпиГуиде её нет, поэтому надо самому догадываться, как она работает.
Да ну прямо? http://www.mentalis.org/apilist/SetEndOfFile.shtml
На локальной версии далеко не уедешь...Хакер писал(а):tyomitch писал(а):Хакер писал(а):Неа. В АпиГуиде её нет, поэтому надо самому догадываться, как она работает.
Да ну прямо? http://www.mentalis.org/apilist/SetEndOfFile.shtml
Я имел ввиду в локальной версии. Т.е. в проге а не на каком то сайте. Я денег не наберусь залить по сайтам, ради описания 1-ой апишки.
andreymp писал(а):не совсем так.SetEndOfFile 'устанавливаем длину файла=позиции указателя
SetEndOfFile - переводит текущую позицию в конец открытого файла. (Д.Эпплман)
andreymp писал(а):SetFilePointer - не работает с файлами более 2^64 байт.
Хакер писал(а):Я имел ввиду в локальной версии. Т.е. в проге а не на каком то сайте. Я денег не наберусь залить по сайтам, ради описания 1-ой апишки.
andreymp писал(а):не совсем так.SetEndOfFile 'устанавливаем длину файла=позиции указателя
SetEndOfFile - переводит текущую позицию в конец открытого файла. (Д.Эпплман)
Так что ты не прав...http://www.allapi.net/apilist/SetEndOfFile.shtml писал(а):The SetEndOfFile function moves the end-of-file (EOF) position for the specified file to the current position of the file pointer.
Ну хватит вам, горячие финские парни...Хакер писал(а):tyomitch
Выкладывая 200-300 у.е. каждый месяц за инет, ты бы наверное понял меня.
Sub SetFileSize(Byval sFileName As String, byval lFileSize)
Dim hFile As Long
hFile = FreeFile()
Open sFileName For Binary as #hFile
Select Case LOF(hFile)
Case Is < lFileSize
Put #hFile, lFileSize, CByte(0)
Close #hFile
Case lFileSize
'Файл и так имеет нужный размер - ничего не делаем.
Case Is > lFileSize
err.Raise 5,,"Желаемый размер файла меньше реального."
End Sub
andreymp писал(а):стр.784
Sets the current file position to be the end of file for an open file.
Сейчас этот форум просматривают: Google-бот и гости: 8