Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Метка диска [D7, XP]


veb ©   (2006-04-09 21:20:00) 

Здравствуйте. Как получить метку диска и второе, что здесь не правильно?

function GetVolumeLabel(Drive: Char): String;
var
 SR: TSearchRec;
 SearchString: String[7];
begin
 SearchString := Drive + ':\*.*';
 if FindFirst(SearchString, faVolumeID, SR) = 0 then
   Result := SR.Name;
 FindClose(SR);
end;

выдает название первого найденного файла, а по идее должно давать метку диска.


begin...end   (2006-04-09 22:19:00) [1]

> veb   (09.04.06 21:41) [4]

fFlags — это выходной параметр. Поэтому инициализировать его не нужно. К тому же, в данном случае (для получения метки тома) он не нужен вовсе:

var
 VL: array [0..MAX_PATH] of Char;
begin
 if GetVolumeInformation('C:\', VL, sizeof(VL), nil, Cardinal(nil^), Cardinal(nil^), nil, 0) then
   ShowMessage(VL)
end


veb   (2006-04-09 21:41:00) [2]

to Alexey
значение fFlags чему выставлять? и какой модуль требуется подключить?

to Anatoliy
не понял, а что тогда находит при первом вызове FindFirst? ведь условие в If выполняется? Следовательно, найдена именно метка диска, а выдает имя файла.


Palladin   (2006-04-09 21:34:00) [3]


> Anatoly Podgoretsky ©


только пытался взять, самое интересное, полная фигня, не находит оно это...


AlexeyT   (2006-04-09 21:26:00) [4]

Вот:

var
 dir: string;
 buf1, buf2: array[0..50] of char;
 nNameLen: DWORD;
begin
     dir:= ch+':\';
     FillChar(buf1, SizeOf(buf1), 0);
     FillChar(buf2, SizeOf(buf2), 0);
     if GetVolumeInformation(PChar(dir), @buf1, SizeOf(buf1),
       @fSerial, nNameLen, fFlags, @buf2, SizeOf(buf2)) then
       begin
       fLabel:= buf1; //метка тома
       fSystem:= buf2; //файловая система
       end;


Anatoly Podgoretsky   (2006-04-09 21:22:00) [5]

FindFirst + FindNext пока не будет найдена именно метка


Наверх

Титульная страница Поиск, карта сайта Написать письмо