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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 5 832

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

Приветствую, уважаемые эксперты! Пытаюсь получить метку диска (HDD), таким способом:

var
VolumeName, FileSystemName : array [0..MAX_PATH] of Char;
VolumeSerialNo : DWord;
MaxComponentLength,FileSystemFlags: Cardinal;


GetVolumeInformation(PChar(b.WordDisk),VolumeName,MAX_PATH,@VolumeSerialNo, MaxComponentLength,FileSystemFlags, FileSystemName,MAX_PATH);

При использовании этой функции метки флешек и приводов (если там есть диск) показывает нормально, а вот метки HDD вообще не возвращает. Хоть метка написана по - русски хоть по - английски. Кто знает помогите.

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

Вопрос задал: eclipse (статус: Посетитель)
Вопрос отправлен: 20 декабря 2011, 20:22
Состояние вопроса: решён, ответов: 0.


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

Всего сообщений: 4; последнее сообщение — 22 декабря 2011, 11:12; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 21 декабря 2011, 08:28 [#1]:

Я тупо взял один из примеров с Delphi World и сделал консольную программку. И всё работает. Вот он, попробуй. Если у тебя не сработает, значит дело не в программе.
program p5832;
 
{$APPTYPE CONSOLE}
 
uses
  Windows, SysUtils;
 
var
  VolumeName,
  FileSystemName : array [0..MAX_PATH-1] of Char;
  VolumeSerialNo : DWord;
  MaxComponentLength,FileSystemFlags: Cardinal;
begin
  GetVolumeInformation('C:\',
                       VolumeName,
                       MAX_PATH,
                       @VolumeSerialNo,
                       MaxComponentLength,
                       FileSystemFlags,
                       FileSystemName,
                       MAX_PATH);
  WriteLn('VolumeName = ', VolumeName);
  WriteLn('SerialNo =   ', IntToHex(VolumeSerialNo, 8));
  WriteLn('CompLen =    ', IntToStr(MaxComponentLength));
  WriteLn('Flags =      ', IntToHex(FileSystemFlags, 4));
  WriteLn('FSName =     ', FileSystemName);
 
  ReadLn;
end.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
eclipse

eclipse (статус: Посетитель), 21 декабря 2011, 11:14 [#2]:

Блин... действительно работает в консольном варианте! Чё ж ей надо - то!?
min@y™

min@y™ (статус: Доктор наук), 21 декабря 2011, 11:39 [#3]:

Цитата (eclipse):

Блин... действительно работает в консольном варианте! Чё ж ей надо - то!?

Замени своё на это и забудь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
eclipse

eclipse (статус: Посетитель), 22 декабря 2011, 11:12 [#4]:

Смешно получилось!... в том коде, который привёл выше, всё работает. Всё дело было в '\' этом знаке, а я в функцию запихивал напр. C: , а нужно было C:\. Из-за такой мелочи поэтому нифига не возвращалась метка тома... только вот почему всё остальные метки считывались кроме HDD? Ну и пофиг...

22 декабря 2011, 11:19: Статус вопроса изменён на решённый (изменил автор вопроса — eclipse)

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

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