WIN32_FIND_DATA для уникода

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

WIN32_FIND_DATA для уникода

Сообщение arthur2 » 24.12.2009 (Чт) 19:18

В мануалах эта структура объявлена так:

Код: Выделить всё
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type


Как мне объявить её для использования в уникодных версиях функций? Я имею ввиду поля со строками:
Код: Выделить всё
    cFileName(MAX_PATH) As Integer
    cAlternate (14) as Integer

Так что ли? Или может cFileName(MAX_PATH*2) As Byte
Артур
 
   

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

Re: WIN32_FIND_DATA для уникода

Сообщение Viper » 24.12.2009 (Чт) 19:34

arthur2 писал(а):
Код: Выделить всё
    cFileName(MAX_PATH) As Integer
    cAlternate (14) as Integer
Именно так
Весь мир матрица, а мы в нем потоки байтов!

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: WIN32_FIND_DATA для уникода

Сообщение arthur2 » 24.12.2009 (Чт) 19:49

А может всё-таки as byte? просто так проще будет строки извлекать :) Или это чем-нибудь чревато?
Артур
 
   

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: WIN32_FIND_DATA для уникода

Сообщение arthur2 » 24.12.2009 (Чт) 20:55

Viper писал(а):Именно так

Не-а, не так :) Собственно, в этом у меня косяк и оказался: нужно ещё -1, а то поле получается на один знак больше

Переобъявил как байты, чтобы было проще извлекать строки:
Код: Выделить всё
    cFileName(MAX_PATH * 2 - 1) As Byte
    cAlternate(14 * 2 - 1) As Byte
Артур
 
   

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

Re: WIN32_FIND_DATA для уникода

Сообщение Viper » 24.12.2009 (Чт) 21:56

А про -1 то я и забыл
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: WIN32_FIND_DATA для уникода

Сообщение Хакер » 24.12.2009 (Чт) 21:58

Какая разница Byte или Integer. Как ты собрался их выделять?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: WIN32_FIND_DATA для уникода

Сообщение arthur2 » 24.12.2009 (Чт) 22:13

разница лишь в том, что массив байтов можно просто присвоить строке, а из массива интеджерей придётся копировать в строку
Артур
 
   


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

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

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

    TopList  
cron