![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что то я не разберусь с GetVolumeInformation!
Alexander © (2002-11-09 20:36:00)Точнее работаю я сней давно и вроде глюков не замечал, но вот написал такой код и он не хочет работать:
function GetFileSystem(RootPath: PChar): string;
var
MaximumComponentLength: DWORD;
FileSystemFlags: DWORD;
FileSystemName: array [0..1024] of Char;
begin
if not GetVolumeInformation(RootPath, nil, 0, nil, MaximumComponentLength, FileSystemFlags,
FileSystemName, SizeOf(FileSystemName)) then
Result := SysErrorMessage(GetLastError)
else
Result := FileSystemName;
end;
после этого на форму кидаю метку, кнопку и едит.
в обработчике кнопки написал
begin
// Edit1.Text := "C:\";
Label1.Caption := GetFileSystem(PChar(Edit1.Text));
end;
запускаю, набираю в Edit1 C:\ - пишет, что указанный путь не найден! проверил на нескольких машинах. Если после этого задать какой нибудь другой реально существующий в системе диск (напр. А:\), то пишет, что устройство не готово и после этого при наборе C:\ выдаёт то, что ожидалось - "NTFS".
Если же перед запуском проги раскомментировать строку, то показывает правильно с первого раза!
В чём прикол?
Song (2002-11-10 09:02:00) [1]Я думаю ошибка в памяти. AV не возникает?
Используйте тип PDWord
Alexander (2002-11-10 08:12:00) [2]У кого какие идеи будут?
Alexander (2002-11-09 21:16:00) [3]Не помогло :(( - тестирую стразу на нескольких машинах (2000, XP)
я теперь до утра отключаюсь
Snap (2002-11-09 21:10:00) [4]а если вот так
Root: array[0..3] of Char;
begin
StrPCopy(Root, Edit1.Text);
Label1.Caption := GetFileSystem( @Root[0]);
end;
Alexander (2002-11-09 21:08:00) [5]Не помогло, добавил:
Root: array[0..3] of Char;
begin
StrPCopy(Root, Edit1.Text);
Label1.Caption := GetFileSystem(Root);
end;
эффект тот-же, хотя Root=["C",":","\",#0]
Snap (2002-11-09 20:55:00) [6]Наверное string неправильно в pchar перерабатывается. Попробуй StrPCopy