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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 910

/ вопрос решён /

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

Ilia Ermakov Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Ilia Ermakov (статус: 1-ый класс)
Вопрос отправлен: 11 сентября 2007, 13:12
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Ilia Ermakov!
Обычно под Windows нужно уметь различать два типа файловых систем - FAT и NTFS. Есть много способов определять, но есть один "дедовский", который с большой уверенностью поможет их различать. Это попытаться создать в корне диска файл с таким странным именем как $BITMAP (знак доллара в начале нужен). Под FAT он создастся без проблем. А вот под NTFS - нет, так как такой есть (то что вы его не видете, ещё ничего не значит).

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 11 сентября 2007, 14:30
Оценка за ответ: 5

Комментарий к оценке: Прикольный способ, но если случайно в корне диска с FAT будет этот файл, то правильного результата не будет. Правда я не пробовал удалять его перед проверкой, может помогает... Так как предложили друой способ GetVolumeInformation. ))

Ответ #2. Отвечает эксперт: Feniks

Здравствуйте, Ilia Ermakov!
Я могу ошибаться, но попробуйте вот этот код и почитайте в Хелпе функцию GetVolumeInformation...

Приложение:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3. VolumeName,
  4. FileSystemName : array [0..MAX_PATH-1] of Char;
  5. VolumeSerialNo : DWord;
  6. MaxComponentLength,
  7. FileSystemFlags : Integer;
  8. begin
  9. GetVolumeInformation('C:\',VolumeName,MAX_PATH,@VolumeSerialNo,
  10. MaxComponentLength,FileSystemFlags,
  11. FileSystemName,MAX_PATH);
  12. Memo1.Lines.Add('VName = '+VolumeName);
  13. Memo1.Lines.Add('SerialNo = $'+IntToHex(VolumeSerialNo,8));
  14. Memo1.Lines.Add('CompLen = '+IntToStr(MaxComponentLength));
  15. Memo1.Lines.Add('Flags = $'+IntToHex(FileSystemFlags,4));
  16. Memo1.Lines.Add('FSName = '+FileSystemName);
  17. end;


Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 11 сентября 2007, 15:56
Оценка за ответ: 5

Комментарий к оценке: Да работает нормально. Спасибо

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

Всего сообщений: 0.

31 января 2011, 19:29: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

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

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