Консультация № 44786
31.05.2006, 16:00
0.00 руб.
0 3 1
Здраствуйте!!! Я хочу написать прогу, которая переводит байты в мегабайты, но MsgBox вседа выбивает 0, в чом дело???

Приложение:
Private Sub Command3_Click()MB = 0Open "D:\text.txt" For Input As #1FileLength = LOF(1)Close #1MB = FileLength / 1048576MsgBox (MB & " " & "Мегабайт")End Sub

Обсуждение

Неизвестный
31.05.2006, 16:23
общий
это ответ
Здравствуйте, ataman!
Я проверил, все нормально работает и в килобайтах, и в мегабайтах. А 0 М выдает, если в файле ничего нет...
давно
Профессионал
848
1596
01.06.2006, 11:21
общий
------------------------------------Open "D:\text.txt" For Input As #1FileLength = LOF(1)Close #1------------------------------------Таким образом вы определяете размер файла?????Проще использовать FileLength = FileLen("D:\text.txt")А так всё работает.
Неизвестный
10.06.2006, 14:30
общий
У меня, например, все работает. Могу показать тот же подсчет в разобранном виде:Private Declare Function GetFileSize Lib "kernel32" _ (ByVal hFile As Long, _ lpFileSizeHigh As Long) As LongPrivate Declare Function CreateFile Lib "kernel32" Alias _ "CreateFileA" (ByVal lpFileName As String, _ ByVal dwDesiredAccess As Long, _ ByVal dwShareMode As Long, _ lpSecurityAttributes As Long, _ ByVal dwCreationDisposition As Long, _ ByVal dwFlagsAndAttributes As Long, _ ByVal hTemplateFile As Long) As LongPrivate Declare Function CloseHandle Lib _ "kernel32" (ByVal hObject As Long) As Long Private Const GENERIC_WRITE = &H40000000Private Const OPEN_EXISTING = 3Private Const FILE_SHARE_READ = &H1Private Const FILE_SHARE_WRITE = &H2Sub ee() Dim hFile As Long Dim lSize As Long, kbSize As Double, mbSize As String Dim curSize As Currency Dim msg As String ‘Открываем файл hFile = CreateFile("C:\11\q.txt", _ GENERIC_WRITE, FILE_SHARE_READ Or _ FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0) ‘Получаем размер файла lSize = GetFileSize(hFile, 0) kbSize = lSize / 1024 mbSize = Format$(kbSize / 1024, "##0.00000000000000000000000000") CloseHandle hFile MsgBox "Bytes: " & CStr(lSize) & vbCrLf & _ "Kilobytes: " & CStr(kbSize) & vbCrLf & _ "Megabytes: " & CStr(mbSize)End Sub
Форма ответа