проблема с Getfilesize

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
noob4ever
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 117
Зарегистрирован: 05.01.2006 (Чт) 0:58

проблема с Getfilesize

Сообщение noob4ever » 22.04.2006 (Сб) 8:45

Люди помогите вот засада, не работает код:
в модуле пишу:
Public Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long

Public Declare Function CreateFile Lib "kernel32" (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

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long


В коде окошка:
Public lngHandle As Long, fileSize As Long
Public lngLong As Long

Private Sub Комманда1_Click()
lngHandle = CreateFile("D:\track1.mp3", GENERIC_READ, FILE_SHARE_READ, 0&, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0&)

fileSize = GetFileSize(lngHandle, 0)
Метка1.Caption = fileSize
CloseHandle (filePointer)
End Sub

Не пойму что не так!

Выскакивает ошибка 453 при нажатии на кнопку,
что невозможно найти допуск в DLL CreateFile in kernel32!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.04.2006 (Сб) 8:51

1. Объясни мне, в чём сакральный смысл применения именно этих функций при условии наличия встроенных?
2. Объясни мне смысл CloseHandle (filePointer)?
3. Объясни мне, почему ты используешь дебильный переведённый VB, само существование которого не должно было начаться?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 22.04.2006 (Сб) 9:41

Если попробовать поиспользовать функцию CreateFileA, то ошибка 453 пропадет, но скорее всего появится другая... Общая тупость кода правда от этого изменения не измениться
Весь мир матрица, а мы в нем потоки байтов!

noob4ever
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 117
Зарегистрирован: 05.01.2006 (Чт) 0:58

Сообщение noob4ever » 22.04.2006 (Сб) 11:02

GSerg писал(а):1. потому что ненаю других
2. не filePointer а lngHandle, описался
3. какой есть тем и пользуюсь


Мне просто надо узнать размер файла! поможите()

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.04.2006 (Сб) 11:09

1. А стоило бы книжку почитать.
3. А стоило бы нормальный поискать.

FileLen()
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 22.04.2006 (Сб) 11:09

функцией FileLen не пробовал попользоваться?
Весь мир матрица, а мы в нем потоки байтов!

noob4ever
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 117
Зарегистрирован: 05.01.2006 (Чт) 0:58

Сообщение noob4ever » 22.04.2006 (Сб) 11:32

!Viper! писал(а):функцией FileLen не пробовал попользоваться?

Ща попробую))

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

Сообщение Alexanbar » 22.04.2006 (Сб) 17:28

Кстати, создай на досуге файлик размером гига 4 и посмотри, что будет.

Vadim_001
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 19.04.2006 (Ср) 15:50

Сообщение Vadim_001 » 22.04.2006 (Сб) 18:46

только чтоб совсем было красиво надо перед измерением размера проверить наличие файла

ChDrive "C:"
ChDir "C:\tmp"
If Len(Dir("ImyaFile.txt")) <> 0 Then
RazmerFile= FileLen("ImyaFile.txt")
End If

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

Сообщение keks-n » 22.04.2006 (Сб) 19:05

Vadim_001
Ага... А он скрытый или системный...
Тогда уж Dir(filename, vbNormal Or vbHidden Or vbSystem Or vbReadOnly Or vbArchive)
Изображение

Vadim_001
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 19.04.2006 (Ср) 15:50

keks-n

Сообщение Vadim_001 » 22.04.2006 (Сб) 20:12

вот же народ :)
человеку просто надо было узнать размер файла :)
согласен, из-под VB скрытого не видно
академически идеально, но, ИМХО, на практике очень мало вариантов когда программы должна работать со скрытыми файлами. хотя извращения всегда были

noob4ever
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 117
Зарегистрирован: 05.01.2006 (Чт) 0:58

Сообщение noob4ever » 23.04.2006 (Вс) 10:00

спасибо разобрался!


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

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

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

    TopList  
cron