Размер файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Размер файла

Сообщение 13GHOST » 21.12.2005 (Ср) 19:49

Как можно опредилить размер файла на жестком диске?
заранне спасибо за ответ...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 21.12.2005 (Ср) 19:59

FileLen("путь к файлу")
Изображение

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 21.12.2005 (Ср) 20:21

блин а почему эта функция при слишком большом размере файла неправильно опредиляет его размер к примеру файл размером (4гб) она опредиляет что он весит: -1024кб. Можно ли как нить это опредилить посредством этой функции??

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 21.12.2005 (Ср) 21:18

Нечего хранить такие большие файлы :lol: Шутка.

Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Private Declare Function lopen Lib "kernel32" _
Alias "_lopen" _
(ByVal lpPathName As String, _
ByVal iReadWrite As Long) As Long
Private Const OF_CANCEL = &H800
Private Const OF_CREATE = &H1000
Private Const OF_DELETE = &H200
Private Const OF_EXIST = &H4000
Private Const OF_PARSE = &H100
Private Const OF_PROMPT = &H2000
Private Const OF_READ = &H0
Private Const OF_READWRITE = &H2
Private Const OF_REOPEN = &H8000
Private Const OF_SHARE_COMPAT = &H0
Private Const OF_SHARE_DENY_NONE = &H40
Private Const OF_SHARE_DENY_READ = &H30
Private Const OF_SHARE_DENY_WRITE = &H20
Private Const OF_SHARE_EXCLUSIVE = &H10
Private Const OF_VERIFY = &H400
Private Const OF_WRITE = &H1


Private Const HFILE_ERROR = -1
Private Const FILE_BEGIN = 0
Private Const FILE_CURRENT = 1
Private Const FILE_END = 2
Private Declare Function lclose Lib "kernel32" _
Alias "_lclose" (ByVal hFile As Long) As Long

Private fso As New FileSystemObject


Public Function FileSize(FilePath As String) As Double
Dim Pointer As Long
Dim lpFSHigh As Long 'старший разряд
Dim lpFSLow As Long 'младший
Dim fso As New FileSystemObject

On Error Resume Next
Err.Clear

Pointer = lopen(FilePath, OF_READ)
If Pointer < 0 Then
Err.Clear
'специально сделано для зашифрованных не очень больших файлов
If fso.FileExists(FilePath) Then
FileSize = fso.GetFile(FilePath).Size
End If
Err.Clear
Exit Function
End If
'e = Err.LastDllError

'If e <> 0 Then Exit Function

lpFSLow = GetFileSize(Pointer, lpFSHigh)
If lpFSLow >= 0 Then
FileSize = lpFSLow
Else
FileSize = 2 ^ 32 + lpFSLow
End If

FileSize = FileSize + 2 ^ 32 * lpFSHigh

lclose Pointer

End Function

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.12.2005 (Чт) 15:36

Alexanbar писал(а):Нечего хранить такие большие файлы :lol: Шутка.


Ну и в Double их размер помещать как-то... Шутка. :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 73

    TopList