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

Вниз

Аттрибуты файла   Найти похожие ветки 

 
mozgan   (2006-01-11 21:19) [0]

Всем привет!
У меня один вопрос: Как правильно пользоваться функцией FileGetAttr?
У меня список файлов и хотелось, чтобы в Edit1 показывался его атрибут. Првильно ли такой ход: if opendialog1.execute then
if opendialog1.filename = faReadOnly then label1.caption:="для чтения". Это я так по памяти. Как ни крути - ничего не получается.
Подскажите, пожалуйста!


 
Johnmen ©   (2006-01-11 21:23) [1]

Есть такая кнопка, F1 называется. При наведении курсора в редакторе Дельфи на слово и последующем нажатии этой волшебной кнопы можно прочитать много интересного. В т.ч. и ответы на свои вопросы...


 
mozgan   (2006-01-11 21:28) [2]

Клава F1 мне знакома. Прикол в том, что я самоучка и в хелмах понимаю мло чего:(
Вот посмотрите,  
 if ReadFile.Checked = true then
 for i:=0 to listbox2.Items.Count-1 do
 sysutils.FileSetAttr(listbox2.Items[i],01); //для чтения

Я не могу понять обратный процесс.


 
Джо ©   (2006-01-11 21:32) [3]

> ли такой ход: if opendialog1.execute then
> if opendialog1.filename = faReadOnly then label1.caption:
> ="для чтения"

Совершенно неправильный.


> Я не могу понять обратный процесс.

Вообще говоря, атрибуты файлов это битовая маска. Т.е, если выполняется условие faReadOnly and FileGetAttr(...) <> 0, то атрибут faReadOnly установлен. И для остальных атрибутов аналогично, разумеется.


 
mozgan   (2006-01-11 21:40) [4]

Джо! Посмотри, пожалуйста!

 if open.Execute then begin
 if open.FileName = (faReadOnly) and (FileGetAttr(open.FileName))then
 label1.Caption:="read"else
 label1.Caption:="???";

Почему ошибка - несопоставление типов (стока/число)


 
begin...end ©   (2006-01-11 21:41) [5]

const
 Attr: array [1..4] of Cardinal =
   (FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_SYSTEM);
 Str = "AHRS";
var
 A: Cardinal;
 I: Integer;
 S: string;
begin
 A := GetFileAttributes("C:\Command.com");
 S := "";
 for I := 1 to 4 do
   if A and Attr[I] <> 0 then
     S := S + Str[I];
 Label1.Caption := S
end


 
Gero ©   (2006-01-11 22:28) [6]

> Почему ошибка - несопоставление типов (стока/число)

Потому что open.FileName это строка, а faReadOnly — число.


 
Johnmen ©   (2006-01-11 22:45) [7]

>begin...end ©   (11.01.06 21:41) [5]

Зачем ты так?
Достаточно GetFileAttributes+F1
ЗЫ
Кстати, var I : Cardinal for I := Low(Attr) to High(Attr) do ...
и т.п.


 
mozgan   (2006-01-11 23:00) [8]

A := GetFileAttributes("C:\Command.com");

Это для одного файла, а если файлов много?


 
begin...end ©   (2006-01-12 08:23) [9]

> Johnmen ©   (11.01.06 22:45) [7]

> Достаточно GetFileAttributes+F1

Позвольте мне при ответе самому решать, чего будет достаточно.


 
mozgan   (2006-01-12 12:06) [10]

Доброе утро Мастера!
Я вчерашний тута. Вы мне вчера головную боль помогли немного успокоить, Хотел это сказать ещё вчера - но вырубили свет и спать...
БОЛЬШОЕ СПАСИБО !!!

Мастера, помогите разобраться во вчерашнем примере:
procedure TForm1.Button1Click(Sender: TObject);
begin
 C := GetFileAttributes("C:\Out.txt");
 S := "";
 for I := 1 to 4 do
 if C and Attr[I] <> 0 then
 S := S + Str[I];
 Label1.Caption := S;
end;

Как вместо  C := GetFileAttributes("C:\Out.txt");
Можно записать примерно так: C := GetFileAttributes(Edit1.Text);


 
Gero ©   (2006-01-12 12:30) [11]

> Как вместо  C := GetFileAttributes("C:\Out.txt");
> Можно записать примерно так: C := GetFileAttributes(Edit1.Text);

Вот так:
C := GetFileAttributes(Edit1.Text);


 
mozgan   (2006-01-12 14:19) [12]

Gero!!!!
Так нельзя!
Ты сам-то хоть пробовал? (хотя-бы код переписать и проверить?).
Я новичок (самоучка) - и вижу, что новичков и обманывают.
Так не хорошо.
Хоть пару-тройку примеров - одни подсказки и советы, которые нам, новичкам не понять :((((((

реальная ошибка в том, что TEdit - это строка, а PAnsiChar - строка символов и ошибка - несопоставление типов. Если вы специалист, то зачем
тогда мозги пудрить?
Мне очень-очень обидно :(((


 
stakan ©   (2006-01-12 14:33) [13]

C := GetFileAttributes(PChar(Edit1.Text));


 
mozgan   (2006-01-12 20:29) [14]

Привиденный ниже фрагмент сработал.
Я просто обязан извиниться перед ВСЕМИ МАСТЕРАМИ!!!
Извините меня!
И Большое спасибо за подсказку !


 
Gero ©   (2006-01-12 21:54) [15]

> mozgan   (12.01.06 14:19)

Наплыв эмоций...



Страницы: 1 вся ветка

Текущий архив: 2006.01.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
1-1135449800
SEN
2005-12-24 21:43
2006.01.29
Значение текстового поля в Word


1-1135233149
Ups
2005-12-22 09:32
2006.01.29
ShellTreeView with checkbox


2-1136884376
Nirvana
2006-01-10 12:12
2006.01.29
Использование функций одного модуля в другом


15-1136818398
Prohodil Mimo
2006-01-09 17:53
2006.01.29
Как вам моя ёлка? :о)


4-1131885554
Arazel
2005-11-13 15:39
2006.01.29
Как создается компонент