Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 029

Раздел: Delphi » Прочее
/ вопрос открыт /

Приветствую, уважаемые эксперты!
Как определить из списка устройств какое к какой категории относится? То есть как узнать все жестние диски, съемные диски, сетевые диски?

Roman Novikov Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Roman Novikov (статус: Посетитель)
Вопрос отправлен: 18 февраля 2011, 23:20
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: VKHacker

Здравствуйте, Roman Novikov!
Возможно мой пример вам поможет.

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
 
  TDWDriveShellInfo = packed record
     Icon : hIcon;
     Image : integer;
     DisplayName,
     TypeName : string
  end;
 
 
  TForm1 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
uses ShellApi;
 
{$R *.dfm}
 
function GetDriveShellInfo(const Drive: Char): TDWDriveShellInfo;
var
  SHFileInfo : TSHFileInfo;
begin
  ShGetFileInfo (PChar(Drive + ':\'),
                 0,
                 SHFileInfo,
                 SizeOf (TSHFileInfo),
                 SHGFI_TYPENAME or
                    SHGFI_DISPLAYNAME or
                    SHGFI_SYSICONINDEX or
                    SHGFI_ICON);
  with result do
  begin
    Icon  := SHFileInfo.hIcon;
    Image := SHFileInfo.iIcon;
    DisplayName := SHFileInfo.szDisplayName;
    TypeName := SHFileInfo.szTypeName
  end
end;
 
 
 
procedure TForm1.btn1Click(Sender: TObject);
var ch: Char;
begin
  for ch := 'A' to 'Z' do
    ShowMessage(Format('Drive: %s, Type: %s', [Ch, GetDriveShellInfo(ch).TypeName]))
end;
 
end.

Ответ отправил: VKHacker (статус: 1-ый класс)
Время отправки: 19 февраля 2011, 00:17
Оценка за ответ: 5

Комментарий к оценке: Интересный вариант

Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 19 февраля 2011, 13:58; участников в обсуждении: 3.
bugmenot

bugmenot (статус: 3-ий класс), 19 февраля 2011, 11:27 [#1]:

хм, а зачем из одной структуры в другую поля гонять? и почему packed?
виконання програми розпочинається з того самого мiсця, де призупинилося.

min@y™

min@y™ (статус: Доктор наук), 19 февраля 2011, 11:29 [#2]:

Судя по вопросу, достаточно функции GetDriveType().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
bugmenot

bugmenot (статус: 3-ий класс), 19 февраля 2011, 12:49 [#3]:

Конечно достаточно, но топикстартер задолжал мне очков за ODS поэтому не консультирую :-D
виконання програми розпочинається з того самого мiсця, де призупинилося.

Roman Novikov

Roman Novikov (статус: Посетитель), 19 февраля 2011, 13:58 [#4]:

bugmenot: Конечно достаточно, но топикстартер задолжал мне очков за ODS поэтому не консультирую.
В смысле?

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:38
Выполнено за 0.03 сек.