На TP вот так работает:
var s: searchrec;
findfirst ('c:\*.*',VolumeID,s);
if doserror=0 then writeln(s.name);
var s: tsearchrec;
if findfirst ('c:\*.*',faVolumeID,s)=0 then writeln(s.name);
findclose(s);
а GetVolumeInformation под ДОСом будет работать?
{$IF Defined(WIN32)}
// тут блок кода с использованием GetVolumeInformation
{$ELSEIF Defined(GO32V2)}
// тут - досовский вариант, с использованием faVolumeID
{$ELSE}
// тут можно добавить поддержку других ОСей
{$ENDIF}
Можешь написать пример использования GetVolumeInformation?
Что-то я попробовал, все равно не выводит метку.
Ну, например, вот так:
function GetVolumeLabel(const DriveLetter: Char): string;
var
VolumeName: array [0 .. MAX_PATH - 1] of Char;
VolumeSerialNo : DWORD;
MaxComponentLength, FileSystemFlags : Cardinal;
begin
GetVolumeInformation(PChar(DriveLetter + ':\'),
VolumeName, MAX_PATH, nil,
MaxComponentLength, FileSystemFlags, nil, MAX_PATH);
GetVolumeLabel := VolumeName;
end;
// Вызывать:
writeln (GetVolumeLabel ('С'));
PChar(DriveLetter + ':\')
GetVolumeLabel := VolumeName;
{$H+}первой строкой программы, или Options -> Compiler -> Syntax -> включить Use AnsiStrings. Если этот режим отключен - то String трактуется как ShortString, что приводит к ошибкам...
ооотлично! работает!