Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Аттрибуты файла [D7]


mozgan ©   (2006-01-11 21:19:00) 

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


Gero   (2006-01-12 21:54:00) [1]

> mozgan   (12.01.06 14:19)

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


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

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


stakan   (2006-01-12 14:33:00) [3]

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


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

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

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


Gero   (2006-01-12 12:30:00) [5]

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

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


mozgan   (2006-01-12 12:06:00) [6]

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

Мастера, помогите разобраться во вчерашнем примере:
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);


begin...end   (2006-01-12 08:23:00) [7]

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

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

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


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

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

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


Johnmen   (2006-01-11 22:45:00) [9]

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

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


Gero   (2006-01-11 22:28:00) [10]

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

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


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

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


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

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

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

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


Джо   (2006-01-11 21:32:00) [13]

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

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


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

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


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

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

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


Johnmen   (2006-01-11 21:23:00) [15]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо