![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
setare |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Здравствуйте! У меня очень легкая программа, но я не могу понять где в моем коде ошибка. Нужно найти все директивы и файлы и записать их в разных созданных файлах. Оно мне ничего не пишет. Что делать?
Исходный код program files; uses dos; type str79=string[79]; procedure find(var f,f1:text;mask:str79;attr:byte;S:searchRec); begin Findfirst('*.*',AnyFile,S); while DosError=0 do begin if S.attr=$10 then begin writeln(f,S.name); FindNext(s); end else if S.attr=$3F then writeln(f1,S.name,'-',s.size/1024:6:2) end; end; var flname:string[20]; f,f1:text; pathstr:string[20]; begin writeln('Vvedite put:'); readln(pathstr); writeln('Vvedite imya 1 fila.'); readln(flname); writeln('Vvedite imya 2 fila.'); readln(flname); assign(f,flname); assign(f1,flname); rewrite(f); rewrite(f1); end. -------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Э... нет, что-то тут нетак...
начнем с того,что Код rewrite(f); rewrite(f1); Сотрет файлы найденные и создаст заново... + процедура find какая-то страшная... ![]() можете дать задание? ктати, что за директивы? может директории? Цитата Нужно найти все директивы и файлы и записать их в разных созданных файлах. дамаю задание такое: Цитата Найти все директории и их именазаписать в 1 файл. Найти все файлы и имена записать в 2 файл. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
setare |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Да, да вы правы. Посто у меня после 5 пары голова уже не варит и все путаю. Извините. Ну так мы разве не используем rewrite когла хотим что-нибудь записать в файл?
А еще через черточку записать размеры файлов в кб. -------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
setare
И еще один вопрос: Нужно найти все файлы и директории только в одной папке? Или во всех ее поддиректориях? Тогда без рекурсии не обойтись... |
setare |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Вот точное задание: Нужно создать два файла. В один записать все поддиректории из указанной директории и в другой все файлы из этой же указзаной директории и указать их размер. Путь надо вводить с клавиатуры.
-------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Код uses dos; var f_files, f_dirs: text; Procedure ScanDir(Dir:string); var s_Rec:SearchRec; begin FindFirst(Dir+'*.*', AnyFile, s_rec); while doserror = 0 do begin { если найдена директория "." или ".." - ничего не делать } if (s_Rec.name='.') or (s_rec.name='..') then else { если найдена другая директория } if (s_Rec.Attr and Directory) = directory then writeln(f_dirs, Dir+s_Rec.name) else { Значит, нашли файл } writeln(f_files, Dir+s_rec.name,' - ',s_rec.size/1024:6:2); FindNext(s_Rec); end end; Var S: string; begin assign(f_files, 'first.txt'); rewrite(f_files); assign(f_dirs, 'second.txt'); rewrite(f_dirs); { здесь - ввод пути в переменную S } ScanDir(S); close(f_dirs); close(f_files); end. |
SHnur |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 81 Пол: Мужской Реальное имя: Шурик Репутация: ![]() ![]() ![]() |
Цитата мы разве не используем rewrite когла хотим что-нибудь записать в файл? :nono: reset , rewrite и append используется для открытия файла для чтения или записи . reset - открывает для чтения и записи существующий файл append - открывает только для записи существующий файл rewrite - создаёт новый файл и открывает его для чтения и записи а уже после открытия файла можно читать или записывать в него используя write/writeln(f,text) , read/readln(f) и (blockwrite , blockread для блочных файлов) FAQ по файлам переписывать сюда зачем? Сообщение отредактировано: volvo - 1.04.2005 19:15 -------------------- Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом. |
setare |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
а можно там где мы распечатываем файлы написать через черту так:
writeln(f_files, Dir+s_rec.name,'-',size/1024:6:2); при size:=longint? А извините, но нельзя ли эту программу написать используя аттрибуты? Пготому что как то сложное решение получилось. С аттрибутами разве не проще? Просто я не очень понимаю то, что вы написали. -------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Я исправил... Причем размер стоит брать только для файлов, из той же структуры s_rec
Цитата А извините, но нельзя ли эту программу написать используя аттрибуты? А, извините, что Вам легче сказать с первого взгляда, что такое $10 или Directory? $3F или AnyFile? Не нужно переходить на конкретные значения, не привыкайте к этому... Это может сослужить очень плохую службу... Везде, где только можно, пользуйтесь предопределенными константами Смотрите комментарии. |
setare |
![]()
Сообщение
#10
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Спасибо большое за обьяснение и извините за беспокойство! Я все поняла.
-------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:54 |