| 
| 
 | Вопрос # 5 029/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Как определить из списка устройств какое к какой категории относится? То есть как узнать все жестние диски, съемные диски, сетевые диски?
 
|  |   Вопрос задал: 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 (статус: 3-ий класс), 19 февраля 2011, 11:27 [#1]:хм, а зачем из одной структуры в другую поля гонять? и почему packed? виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | min@y™ (статус: Доктор наук), 19 февраля 2011, 11:29 [#2]:Судя по вопросу, достаточно функции GetDriveType(). Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | bugmenot (статус: 3-ий класс), 19 февраля 2011, 12:49 [#3]:Конечно достаточно, но топикстартер задолжал мне очков за ODS поэтому не консультирую   виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Roman Novikov (статус: Посетитель), 19 февраля 2011, 13:58 [#4]:bugmenot: Конечно достаточно, но топикстартер задолжал мне очков за ODS поэтому не консультирую. В смысле?
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |