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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2015, 14:57   #1
botan32
Пользователь
 
Регистрация: 26.11.2015
Сообщений: 52
По умолчанию Работа с HDD

Добрый день! Нужна помощь. Пытаюсь получить список локальных дисков. все работает как надо, но когда запускаю прогу не из среды прогр., а четез ехе, то выскакивает ошибка "Нет диска в устройстве, вставьте диск в устройство" на те диски, которые скрыты системой. Хотя проверку я прописывал.
Исходник прилагаю
Вложения
Тип файла: rar HDD.rar (69.0 Кб, 13 просмотров)

Последний раз редактировалось botan32; 26.11.2015 в 16:13.
botan32 вне форума Ответить с цитированием
Старый 26.11.2015, 15:17   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Не видно что-то, чтобы вы что-либо приложили. Воспользуйтесь тэгом code и представьте часть кода, которой вы получаете список дисков.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 26.11.2015, 15:29   #3
botan32
Пользователь
 
Регистрация: 26.11.2015
Сообщений: 52
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  LogicalDrives: Int64;
  IndexDrives: Integer;
  DiskDriveType: UInt;
begin
  try
    for IndexDrives := 1 to 26 do
    begin
    Application.ProcessMessages;
    LogicalDrives := DiskSize(IndexDrives);
    {Выводим диски которые поддаются условию}
      if LogicalDrives >= 0 then
      begin
        if CheckBox1.Checked then
        begin
        if (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_NO_ROOT_DIR) and
           (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_UNKNOWN) and
           (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_REMOTE) and
           (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_CDROM) and
           (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_RAMDISK) then
            with ListView1.items.Add do
            begin
            Caption:=Chr(IndexDrives + 64);
            end;
        end else
        begin
        if (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_NO_ROOT_DIR) and
           (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_UNKNOWN) and
           (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_REMOTE) and
           (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_CDROM) and
           (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_REMOVABLE) and
           (GetDriveType(PChar(Chr(IndexDrives + 64) + ':\')) <> DRIVE_RAMDISK) then
            with ListView1.items.Add do
            begin
            Caption:=Chr(IndexDrives + 64);
            end;
        end;
      end else

    end;
    except
    Application.MessageBox('Невозможно получить список дисков, дальнейшая работа невозможна!',
			                     'Ошибка при получении дисков...',
			                      MB_OK Or MB_ICONERROR);
    Exit;
    end;
end;

Последний раз редактировалось Аватар; 26.11.2015 в 16:00.
botan32 вне форума Ответить с цитированием
Старый 26.11.2015, 18:59   #4
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

В коде я вижу, что у каждого из 26 дисков идет попытка получения размера, вне зависимости от того, скрыт этот диск, удален, или еще какой. Проверка стоит только при добавлении диска в ListView.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 27.11.2015, 09:06   #5
botan32
Пользователь
 
Регистрация: 26.11.2015
Сообщений: 52
По умолчанию

Так я исходя из размера и проверяю все диски. Если размер равен -1, то диск скрыт и его в список не добавляю. Если это не правильно или есть более актуальным метод, прошу поделиться.
botan32 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как перенести установленный win7 c плохого hdd на новый hdd ? gpu0 Компьютерное железо 1 15.06.2012 22:14
работа с HDD OffRoad Общие вопросы Delphi 4 16.01.2011 18:10
HDD counter Компьютерное железо 1 06.07.2010 04:03
HDD vanovi Компьютерное железо 1 02.09.2009 01:53