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

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


Информационный Канал Subscribe.Ru


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

Выпуск № 078
от 05.01.2003, 12:30

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 136
Отправлено ответов: 388
Активность: 285.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Ace
Статус: Доверительный
Общий рейтинг: 139.62
[Подробней >>]
Necro
Статус: Доверительный
Общий рейтинг: 109.87
[Подробней >>]
Tancho
Статус: Доверительный
Общий рейтинг: 130.98
[Подробней >>]
 
Vadim
Статус: Опытный
Общий рейтинг: 146.8
[Подробней >>]
X-RayMan
Статус: Доверительный
Общий рейтинг: 144.73
[Подробней >>]
Melkor
Статус: Доверительный
Общий рейтинг: 127.19
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 117.4
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 134. Привет, коллеги! С новым Годом! Вот Вам вопрос-тест :) Ответ я знаю. А вы найдете? Хотелось бы увиде... (ответов: 7)

Вопросов: 1, ответов: 7


 Вопрос № 134

Привет, коллеги!
С новым Годом!
Вот Вам вопрос-тест :)
Ответ я знаю. А вы найдете?
Хотелось бы увидеть ответы от всех. :)
Подробно не смотреть, а то не интересно получится :)))
Задача: Удалить в текущем каталоги файлы с именами "1".."9"
а потом их создать нулевой длины.
Решение в приложении дает ошибку. Какую строчку надо добавить, чтобы прогу заработала? Нужны инимальные изменения, в принципе - добавка 1 строки!
Удачи!
ЗЫ Если кто не знал: Добавка опций компилятора в исходник - Ctrl+O, O


Приложение:


Вопрос отправлен: 02.01.2003, 12:22
Отправитель: Sensey

[Следующий вопрос >>] [Список вопросов]

Отвечает Ace

Здравствуйте, Sensey!
И тебя с прошедшим! Смотри приложение.

Приложение:

Ответ отправлен: 02.01.2003, 13:13
Отправитель: Ace


Отвечает Necro

Доброе время суток, Sensey!
По идее неплохо бы после Erase проверить на наличие ошибки(IOResult). Если он не нулевой и ты его не посмотрел, то дальше тебя к диску не пустят.

Ответ отправлен: 02.01.2003, 13:11
Отправитель: Necro


Отвечает Tancho

Добрый день, Sensey!
Я не знаю какая цель ты ставиш с этом задачку,
но если вставим опции - {$I-} перед rewrite(f) и {$I+}
после close(f), прогу дает все что ты хочешь и нет никаких
ошибок. Смотри приложению!


Приложение:

Ответ отправлен: 02.01.2003, 15:01
Отправитель: Tancho


Отвечает Vadim

Здравствуйте, Sensey!
Я, честно говоря, не понял, в чем прикол :)).
Если файлы с именами "1".."9" существуют, то твой код никакой ошибки не даст, сначало удаляет их, а потом создает нулевой длины.
Если же файлы эти не существуют, тогда конечно :)). Нужно будет обратиться к функции IOResult, раз уж ты выключаешь встроенную проверку, чтобы обнулить ошибку.


Ответ отправлен: 02.01.2003, 15:10
Отправитель: Vadim


Отвечает X-RayMan

Привет, Sensey!
Если отключить проверку ввода/вывода все работает. Но, наверное, это не то, что ты хотел. Найду еще что-то - скину.

Приложение:

Ответ отправлен: 03.01.2003, 00:47
Отправитель: X-RayMan


Отвечает Melkor

Приветствую Вас, Sensey!
Странный вопрос. Если файлы есть в директории, то все работает, а если нет, нужно испол. IOResult.


Ответ отправлен: 03.01.2003, 14:15
Отправитель: Melkor


Отвечает Ayl

Доброе время суток, Sensey!
Да, интересная ошибка. Не знал (точнее, знал, но запамятовал), что в случае возникновения ошибки при выключенной обработке ошибок ввода-вывода ({$I-}) все дальнейшие операции ввода-вывода не изменяют флаг состояния ошибки до вызова функции IOResult.
Соответственно, в твоей программе если при выполнении удаления файла процедурой erase такого файла нет, то ошибка выдана не будет (работает {$I-}), но состояние ошибки будет запомнено (код ошибки 2). И когда потом будет сделана попытка создать файл 0-й длины (rewrite (f)), уже без подавления обработки ошибок, то будет выдан а ошибка Runtime error 002 at 0000:00ea. Описание ошибки - file not found. Место возникновения - процедура rewrite (f). Что очень странно, так как данная процедура не может выдавать эту ошибку.
Для исправления надо в первом цикле (где удаление) после вызова процедуры erase (f) поставить вызов функции IOResult. Например, так: if IOResult <> 0 then begin end;
или присвоить его какой-нибудь переменной.

Ответ отправлен: 04.01.2003, 15:04
Отправитель: Ayl



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (37)
C / C++ (28)
Perl (4)
Delphi (21)
Pascal (23)
Basic / VBA (11)
Java / JavaScript (7)
PHP (3)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (34)
Windows NT/2000/XP (25)
"Железо" (31)
Поиск информации (16)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (15)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (4)
КоАП (3)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное