Вверх ↑
Разработчик
Ответов: 26067
Рейтинг: 2121
#1: 2011-11-17 13:28:28 ЛС | профиль | цитата
CriDos писал(а):
else
_Debug;// runtime error
Result := DisplayName(Drv);

Так делать нельзя
_debug -- это метод, и методов после else становится уже болше однго, правильно делать вот так

  else
begin
_Debug;
Result := DisplayName(Drv);
end;

Попробуй еще вот такой код



function GetLabelDisk(Drv: Char; VolReal: Boolean): string;
var WinVer: Byte;
DriveType, NotUsed: DWORD;
Buf: string;
L: integer;
function DisplayName(Drv: Char): string;
var SFI: TSHFileInfo;
begin
FillChar(SFI, SizeOf(SFI), 0);
SHGetFileInfo(PChar(Drv + ':\'), 0, SFI, SizeOf(SFI), SHGFI_DISPLAYNAME);
Result := SFI.szDisplayName;
if Pos('(', Result) <> 0 then
SetLength(Result, Pos('(', Result) - 2);
end;

begin
Result := '';
WinVer := LOBYTE(LOWORD(GetVersion));
DriveType := GetDriveType(PChar(Drv + ':\'));

if {(DriveType <> DRIVE_REMOVABLE) or} VolReal then
begin
SetLength(Buf, MAX_PATH - 1);
// Buf[1] := #0;
GetVolumeInformation(PChar(Drv + ':\'), @Buf[1], MAX_PATH - 1, nil, NotUsed, NotUsed, nil, 0);
Result := Buf;
L := Length(Result);
while (L > 0) and (Result[L] < ' ') do Dec(L);
SetLength(Result, L);

if (Result <> '') and (DriveType <> DRIVE_REMOVABLE) then
Result := DisplayName(Drv)
else
Result := '<none>';
end
else
Result := DisplayName(Drv);
end;
карма: 22

0