![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Метка диска [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 пока не будет найдена именно метка