Главная страница
    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.021 c
1-98623
Василиск
2003-10-17 15:39
2003.10.30
Какая API функция возвращает путь, в кот. устанавливаются проги?


1-98666
Ujin
2003-10-21 16:17
2003.10.30
Lotus notes API - primeru ispolzovania


3-98432
Bezpal
2003-10-02 09:03
2003.10.30
Как связать delphi с sql server 2000?


11-98532
АлександрК
2003-02-09 19:55
2003.10.30
KOL & SQL Server


7-98890
Zhenka
2003-08-14 08:46
2003.10.30
Панель управления->Язык и стандарты вкладка - Числа





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский