Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 161
от 26.04.2006, 17:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 178, Экспертов: 48
В номере:Вопросов: 1, Ответов: 2


Вопрос № 40944: Здравствуйте!!! Я написал программу, осуществляющую поиск файлов в текущем каталоге, имеющих расширение pas и вычисление их суммарного размера, но она не запускается, выбивает курсор на TSearchRec (Unknow indentifier), программу я списал из книги...

Вопрос № 40.944
Здравствуйте!!! Я написал программу, осуществляющую поиск файлов в текущем каталоге, имеющих расширение pas и вычисление их суммарного размера, но она не запускается, выбивает курсор на TSearchRec (Unknow indentifier), программу я списал из книги

Приложение:

Отправлен: 21.04.2006, 16:51
Вопрос задал: ataman (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Boriss
Здравствуйте, ataman!
Таки она у Вас не "выбивает", а НЕ НАХОДИТ! Нужно поключить модуль WinDOS - там описана TSearchRec
---------
Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор)
Россия, Саранск
Организация: факультет Электронной техники, Мордовский госуниверситет
Адрес: г. Саранск
WWW: Программирование на Паскале
----
Ответ отправлен: 21.04.2006, 17:14
Оценка за ответ: 5
Комментарий оценки:
Я так и знал!!! но на WinDOS он у меня выбивает

Отвечает: Форсман Павел Вячеславович
Здравствуйте, ataman!
Дело в том, что допущена ошибка в первой строке. Выглядеть она должна вот так
uses WinDos,Crt;
Тогда все заработает. Хотя я бы предложил другой вариант, используя модуль DOS (см. приложение).
Немного об аргументах в процедуре FindFirst(Path:String; Attr:byte; var Search:SearchRec) - обратите внимание, что буквы "T" в начале описания типа там нет.
Итак Path - это маска. Здесь действуют все правила описания масок DOS, поэтому конкретизировать это не будем.
Attr - набор атрибутов файла для поиска.
Биты с 0 по 5 в параметре Byte описывают следующие аттрибуты:
Бит Dos WinDos Описание
0 ReadOnly faReadOnly Только чтение
1 Hidden faHidden Скрытый
2 SysFile faSysFile Системный
3 VolumeID faVolumeID Идентификатор тома (метка)
4 Directory faDirectory Подкаталог
5 Archive faArchive Архивный

Для выборки по файлам с разными аттрибутами можно комбинировать данные константы. Например, если нужно найти все скрытые и/или файлы только для чтения, то Attr:=ReadOnly+Hidden (DOS) или Attr:=faReadOnly+faHidden (WinDOS)
Таким образом действует принцип OR, т. е. файл считается "подходящим", если совпадает хотя бы один из атрибутов.
Помимо указанных констант существует константа 3Fh - (AnyFile, faAnyFile (WinDos) - все файлы). Еще одна особенность - в DOS - Attr имеет тип byte, а в WinDos - описана как Word.

Далее опишу тип SearchRec. Буду описывать исходя из синтаксиса модуля DOS, т. к. описание этого типа в WinDos отличается только буквой T в начале имени типа:
Итак:
SearchRec=record
Fill:array [1..21] of byte; {Служебная информация ОС - зарезервировано}
Attr:byte; {WinDos - Word. - Атрибуты найденного файла}
Time:Longint; {Время создания или последнего изменения файла - представлено в упакованном формате}
Size:Longint; {Размер - в байтах}
Name:String[12]; {Имя и расширение файла}
end;
Для получения даты и времени используется процедура UnPackTime(Time:Longint; var T:DateTime), где Time - полученное время, T:DateTime описана следующим образом:
Datetime=record
year:Word; {Две последних цифры года}
month:Word; {Месяц 1..12}
day:Word; {День 1..31}
hour:Word; {Час 0..23}
min:Word; {Минуты 0..59}
sec:Word; {Секунды 0..59}

На основании этой информации можно также настроить существующую задачу на более сложные условия поиска. По поводу поля Fill в SearchRec - на мой взгляд, это скорее всего служебная информация для поиска следующего файла, ведь в FindNext мы уже столько аргументов не задает, следовательно они где-то должны храниться.
Удачи!!!
С уважением Форсман.

Приложение:

---------
Научить нельзя, но можно попробовать научиться!!!

Ответ отправил: Форсман Павел Вячеславович (статус: 1-ый класс)
Ответ отправлен: 21.04.2006, 19:46


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.30 от 09.04.2006
Яндекс Rambler's Top100

В избранное