Форум: "Основная";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
ВнизFileSetAttr & FileGetAttr Найти похожие ветки
← →
No_Na_Me (2003-10-16 20:00) [0]Здравствуйте. Вопрос: есть ли альтернатива этим 2-ум функциям, работающая и под Win 9x и под Win XP (NTFS). Заранее спасибо.
← →
Anatoly Podgoretsky (2003-10-16 20:31) [1]Ты хочешь сказать, что под одной из ОС функции не работают?
← →
No_Na_Me (2003-10-16 20:41) [2]2 Anatoly Podgoretsky
Да. Под Xp. Возможно дело в файловой системе.
← →
Anatoly Podgoretsky (2003-10-16 20:55) [3]А по моему ты ошибаешься.
← →
No_Na_Me (2003-10-16 21:06) [4]2 Anatoly Podgoretsky
Возможно. Только почему-то эта конструкция работает криво именно под XP:
var
At:Integer;
Begin
...
At:=FileGetAttr(FileName);
FileSetAttr(FileName,FILE_ATTRIBUTE_NORMAL);
SampleEdit.Lines.SaveToFile(FileName);
FileSetAttr(FileName,At);
...
← →
Anatoly Podgoretsky (2003-10-16 21:17) [5]Нормальная, рабочая конструкция.
← →
No_Na_Me (2003-10-16 21:34) [6]2 Anatoly Podgoretsky
И я о том же. Только вот под XP файлу устанавливаются атрибуты Скрытый и Системный, причем первый нельзя отключить. (Все это дело тестировалось на нескольких машинах, поэтому баги отдельно взятой системы - маловероятны).
← →
Anatoly Podgoretsky (2003-10-16 21:37) [7]Слушай, а ты админ или нет?
← →
No_Na_Me (2003-10-16 21:58) [8]2 Anatoly Podgoretsky
В плане?
← →
Anatoly Podgoretsky (2003-10-16 22:06) [9]Так ты ответь, есть у тебя администраторские права или нет.
← →
Anatoly Podgoretsky (2003-10-16 22:07) [10]И какой код ошибки
← →
No_Na_Me (2003-10-16 22:14) [11]2 Anatoly Podgoretsky
И под админом и под гостем - одинаково.
Ошибка - только в работе с атрибутами. Видимо у XP какие-то свои константы, обозначающие типы файлов.
← →
No_Na_Me (2003-10-17 10:29) [12]Up
← →
[lamer]Barmaglot (2003-10-17 10:41) [13]Другие методы получения аттрибутов:
FindFirst;
GetFileInformationByHandle;
IShellFolder;
← →
han_malign (2003-10-17 10:43) [14]> устанавливаются атрибуты Скрытый и Системный
The GetFileAttributes function returns attributes for a specified file or directory.
.............................
Return Values
If the function fails, the return value is 0xFFFFFFFF. To get extended error information, call GetLastError.
FILE_ATTRIBUTE_HIDDEN = $00000002;
FILE_ATTRIBUTE_SYSTEM = $00000004;
- как думаешь, эти флаги входят в маску 0xFFFFFFFF?
← →
No_Na_Me (2003-10-17 12:15) [15]2 han_malign
Толку-то от этого? Факт в том, что 2 эти функции НЕ РАБОТАЮТ под XP, хоть на изнанку вывернись.
2 [lamer]Barmaglot
Можно попробовать, наверное.
← →
No_Na_Me (2003-10-17 12:34) [16]Нашел какую-то функцию: SetFileAttributes. Может проверит кто на XP (сейчас сижу на 98)?
← →
han_malign (2003-10-17 14:08) [17]> Нашел какую-то функцию: SetFileAttributes
Sysutils.pas
function FileGetAttr(const FileName: string): Integer;
GetFileAttributes(PChar(FileName));
begin
Result :=
end;
function FileSetAttr(const FileName: string; Attr: Integer): Integer;
begin
Result := 0;
if not SetFileAttributes(PChar(FileName), Attr) then
Result := GetLastError;
end;
> Толку-то от этого? Факт в том, что 2 эти функции НЕ РАБОТАЮТ...
- факт в том что эти функции РАБОТАЮТ и в XP, и в любом другом Windows.
Если проблемы с английским, переведу:
GetFileAttributes:
If the function fails, the return value is 0xFFFFFFFF. To get extended error information, call GetLastError.
Исли выполнение функции не достигнет успеха, то она вернет значение 0xFFFFFFFF. Для получения расширенной информации об ошибке, вызовите GetLastError;
- сначала выясни какую ошибку возвращает система(GetLastError), а уже потом делай УТВЕРЖДЕНИЯ с большой буквы...
← →
No_Na_Me (2003-10-17 14:17) [18]> факт в том что эти функции РАБОТАЮТ и в XP, и в любом другом
> Windows.
Ага, работают. На FAT32.
> - сначала выясни какую ошибку возвращает система(GetLastError), > а уже потом делай УТВЕРЖДЕНИЯ с большой буквы...
Да я бы выяснил, но:
> (сейчас сижу на 98)
← →
No_Na_Me (2003-10-17 20:12) [19]Up
← →
Anatoly Podgoretsky (2003-10-17 20:27) [20]Ни в одной из функций нет даже намека на обработку ошибки
At:=FileGetAttr(FileName);
FileSetAttr(FileName,FILE_ATTRIBUTE_NORMAL);
FileSetAttr(FileName,At);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c