Работа с каталогами. Pascal

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

См. хелп по данным процедурам. В общем, фишка в том, что мы передаем Findfirst некоторые сведения (например, маску имени типа "*.txt"), а он нам ищет первый попавшийся файл (каталог, диск), который удовлетворяет этим параметрам, и запихивает информацию о нем в переменную типа TSearchRec (см. хелп по ней). Потом с помощью getFAttr мы вытаскиваем все атрибуты этого найденного чуда, а атрибуты - это целое число, в котором каждый бит отвечает за какое-то свойство (скрытый, архивный, системный и т.д.). С помощью булевского OR мы устанавливаем ему "скрытый" в единичку (см. выше, как это делается), и вызываем setFAttr, который записывает новые атрибуты тому объекту, который все еще лежит в TSearchRec
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Сейчас попробуем что-нибудь наляпать твоим методом.....
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

(например, маску имени типа "*.txt")
Как вскрывать файлы я каонечно же знаю, а вот как вскрывать папку - нет! Можно так же папку вскрывать? Какие параметры у папки задавать?
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Код: Выделить всё

uses dos;
var sr:Tsearchrec;
begin
  findfirst('*',Directory,sr);
  writeln(sr.name);
  while doserror=0 do
  begin
    findnext(sr);
    writeln(sr.name);
  end;
end.
В общем и целом, это выглядит так. А вот делать папки скрытыми у меня что-то не получалось. Давно уже не практиковался. Простое присвоение sr.attr:=sr.attr+Hidden ничего не дало. То ли там константы как-то по-другому называются, то ли надо все-таки использовать get/setFAttr... не помню
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Так, опять сейчас пробывать буду
_____________________
.........loading..............
_____________________
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

А почему у меня тип TSearchRec не известен????
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

надо подключить WinDos
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

надо подключить WinDos
Ничего тут подключать не надо...
======
-----------
Да и Хыиуду с Somewhere, как ни странно ошибались... Я уже сам вчера решил. Как оказалось, всё легко и просто. Если интересуитесь, то могу сказать как.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

в смысле не надо подключать

TSearchRec (type) (WinDos unit)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
The FindFirst and FindNext procedures use
variables of type TSearchRec to scan
directories.

type
TSearchRec = record
Fill: array[1..21] of Byte;
Attr: Byte;
Time: Longint;
Size: Longint;
Name: array[0..12] of Char;
end;
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Да, этого здесь не нужно подключать.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Ответить