Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2017, 12:44   #1
strostov
 
Регистрация: 25.07.2015
Сообщений: 4
По умолчанию Определить наличие всех флешек с заданными именами. Странное поведение GetVolumeInformation

По таймеру опрашиваю все существующие тома и если при совпадении имени тома в массиве с возвращаемым GetVolumeInformation именем volname считаю, что нужная флешка в наличии. Работает, но не всегда. До вчерашнего дня не понимал, где ошибка и почему на одной станции флешки определяются, на другой нет. Вчера настраивая очередную рабочую станцию по-началу с проблемой не столкнулся, все нужные тома определились верно, но после того, как я через апплет управления дисками изменил буквы двух томов, автоопределение перестало работать.

Можно попробовать отбросить GetVolumeInformation и искать на томах заданный файл или строку в файле, но мой внутренний перфекционист считает такой способ не кошерным
strostov вне форума Ответить с цитированием
Старый 19.04.2017, 13:28   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

С какими параметрами вызываете? Как проверяете нужность? По описанию похоже, что у вас захардкожена проверка не по имени тома, а по полному пути типа \\С\\VOL
p51x на форуме Ответить с цитированием
Старый 19.04.2017, 14:19   #3
strostov
 
Регистрация: 25.07.2015
Сообщений: 4
По умолчанию

Использую только vVolumeName. Остальные параметры хоть и определены, значений не присваиваю и не смотрю возвращаемые. Если имя = значению переменной, то переменной пути присваиваю путь к найденному тому

Код:
for i := 0 to listbox2.Items.count-1 do begin

if GetVolumeInformation(pchar(listbox2.Items.Strings[i]), vVolumeName, MAX_PATH, @vVolumeSerialNo, vMaxLength, vFileSystemFlags, vFileSystemName, MAX_PATH) then
volname :=vVolumeName;

if (volname =name1)or(volname =name11)or (volname =name12) then
    path1:=listbox2.Items.Strings[i];
end;
strostov вне форума Ответить с цитированием
Старый 23.04.2017, 11:17   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

http://newerow1989.narod.ru/publ/spisok_diskov/3-1-0-50
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 23.04.2017, 12:53   #5
strostov
 
Регистрация: 25.07.2015
Сообщений: 4
По умолчанию

Попробую вашу функцию, спасибо
strostov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странное поведение idHTTP Serzant Работа с сетью в Delphi 1 21.02.2014 21:04
странное поведение clientdataset DmitryVisuals БД в Delphi 2 16.06.2013 20:48
Странное поведение TDBLookupComboBox megachuhancer БД в Delphi 0 17.06.2010 11:03
Странное поведение gets alex_alpha Общие вопросы C/C++ 3 27.03.2010 18:21
Странное поведение TTreeView mutabor Компоненты Delphi 1 01.05.2009 05:17