Ошибка при определении даты файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Ошибка при определении даты файла

Сообщение Tin » 16.02.2006 (Чт) 12:37

Такая проблема - определяю размер файла с помощью FileDateTime и наткнулся на такую проблему - если файл называется на казахском языке, то бэйсик выдает ошибку о том, что не может найти такой файл... Если дату определеть через апи GetFileTime, то дата определеяется не правельно (1610 год выпуска получается). Может кто знает, как решить такую проблему...
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 16.02.2006 (Чт) 13:59

Решил для наглядности выложить такой файлик - замаялся уже и ОЧЕНЬ надо
Вложения
1.rar
(1.66 Кб) Скачиваний: 37
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.02.2006 (Чт) 14:14

Ну решение всегда есть - переименовать файл. Только оно не всегда подходит. :lol:
Ну а если серьезно, то:
Не стал ничего писать - открыл свойства файла, посмотрел - дата в порядке. Значит что-то ты с GetFileTime намудрил.
В проводнике у меня имя отображается корректно, а вот открыв его вордом я увидел каракули вместо казахских букв в заголовке. Поэтому и басик ругается.
А я все практикую лечение травами...

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 16.02.2006 (Чт) 14:18

Ну тогда попробуй програмно скопировать или переименовать этот файл... А руками переименовывать все файлы я не могу.
А дата не отображается, потому что АПИ не может найти файл с таким именем и проблема заключается в том - какое имя надо передать фунции, чтобы он его поняла
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.02.2006 (Чт) 14:38

Попробуй открывать файл с помощью API-W, а не API-A (CreateFileW). Потом передавай хэндл в GetFileTime... Мож получиться.
А я все практикую лечение травами...

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 16.02.2006 (Чт) 14:49

и как объявить Api-W(CreateFileW).... Что-то я не понял... Если можно, то чуточку подробнее
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 16.02.2006 (Чт) 14:52

Код: Выделить всё
Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileW" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

CreateFile StrConv(Filename,vbUnicode), GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0


:roll:
Если всё делать своими ручками, они скоро отвалятся !

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 16.02.2006 (Чт) 15:21

Вот что я пытаюсь сделать - не работает, хоть даже и буковку В поставил
Код: Выделить всё
lngHandle = CreateFile(StrConv(CDBox.FileName, vbUnicode), GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
    MsgBox "The size of the selected file is" + Str$(GetFileSize(lngHandle, lngLong)) + " bytes."
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 16.02.2006 (Чт) 15:40

Tin
Только что проверил с русским именем файла всё ок
Попробуй в ВБ поставить какой нибудь казахский шрифт, чтобы спецсимволы не заменялись знаками вопроса
Если всё делать своими ручками, они скоро отвалятся !

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 16.02.2006 (Чт) 15:45

С русским проблем нет...

Поставил казахский - не пашет - один черт вопросиками
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 95

    TopList