Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.30;
Скачать: CL | DM;

Вниз

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;
begin
Result :=
GetFileAttributes(PChar(FileName));
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.057 c
14-98863
VDen
2003-10-10 21:02
2003.10.30
SSI-переменные и Апач


1-98701
WondeRu
2003-10-21 10:32
2003.10.30
Разрушительный сбой


3-98495
Raptorus
2003-10-09 15:59
2003.10.30
Есть идеи как реализовать универсальный механизм фильтрации


3-98470
Dim!S
2003-10-10 08:06
2003.10.30
Колонка в DBGrid


3-98498
Alex81
2003-10-09 12:57
2003.10.30
Поиск в таблице