Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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;
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.013 c
1-98669
kavlad
2003-10-20 17:16
2003.10.30
Ресурсы, ресурсы...


3-98525
Sveta
2003-10-08 15:05
2003.10.30
Уважаемые, как преобразовать DBF в таблицу базы данных GDB


3-98494
td
2003-10-09 15:03
2003.10.30
Форматирование для нумерик полей


1-98628
kombat
2003-10-17 15:12
2003.10.30
Создание невизуальных VCL компонентов в консольном приложении


7-98905
alexey
2003-08-15 10:49
2003.10.30
Терминал весовой ТВ-002/05Д





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский