Проблема с проверкой в модуле... |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Проблема с проверкой в модуле... |
priboltik |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Константин Репутация: 1 |
доброго времени суток!
Хотелось бы узнать, почему у меня проверка, котторая стоит в модуле не работает в основной программе.. в частности проверка на наличие файла на диске.. модуль: MIKHAL.PAS ( 1.23 килобайт ) Кол-во скачиваний: 485 прога: PROGRAM4.PAS ( 2.97 килобайт ) Кол-во скачиваний: 492 |
volvo |
Сообщение
#2
|
Гость |
Что значит "не работает"? Все прекрасно работает, запусти программу пошагово и убедись... Другое дело - что ты здесь:
{$I-}закрываешь файл, который в принципе никогда не может быть открытым, причем делаешь это при {$I-}, и при попытке распечатать результат в Case эта ошибка и выходит наружу... |
priboltik |
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Константин Репутация: 1 |
Что значит "не работает"? Все прекрасно работает, запусти программу пошагово и убедись... Другое дело - что ты здесь: {$I-}закрываешь файл, который в принципе никогда не может быть открытым, причем делаешь это при {$I-}, и при попытке распечатать результат в Case эта ошибка и выходит наружу... т.е. в принципе загвоздка в том что нужно в модуле файл закрывать. так??? Добавлено через 3 мин. кстати, если при контроль ошибок не выключать, а проверку на IOResult <>0 ставить, то в принципе работать будет??? |
volvo |
Сообщение
#4
|
Гость |
Цитата принципе загвоздка в том что нужно в модуле файл закрывать. Да... Дело-то все в том, что в модуле ты работаешь с локально описанным файлом, который никак не связан с тем, который описан глобально в основной программе...Цитата если при контроль ошибок не выключать, а проверку на IOResult <>0 ставить, то в принципе работать будет??? Нет... Тогда сразу при возникновении ошибки программа прервется. {$I-} маскирует ошибку, чтобы ее можно было проанализировать... |
priboltik |
Сообщение
#5
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Константин Репутация: 1 |
Да... Дело-то все в том, что в модуле ты работаешь с локально описанным файлом, который никак не связан с тем, который описан глобально в основной программе... это понятно. спасибо.. Нет... Тогда сразу при возникновении ошибки программа прервется. {$I-} маскирует ошибку, чтобы ее можно было проанализировать... тогда еще вот вопрос: вот текст..
здесь вроде должо все работать.. а ошибка все равно вылетает.... Сообщение отредактировано: priboltik - |
volvo |
Сообщение
#6
|
Гость |
Ты не учитываешь одну очень незначительную деталь:
Цитата(TP Help - IOResult) I/O-checking must be off--{$I-}--to trap I/O errors using IOResult. If an I/O error occurs and I/O-checking is off, all subsequent I/O operations are ignored until a call is made to IOResult. A call to IOResult clears the internal error flag. То есть здесь:until ioresult=0; { <--- } IOResult уже как раз = 0 (ты уже обращался один раз к IOResult, и его значение после обращения было очищено - сброшено в 0), и ты пытаешься читать из файла, которого нет... Решение: repeat |
priboltik |
Сообщение
#7
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Константин Репутация: 1 |
Все понятно.. спасибо
|
priboltik |
Сообщение
#8
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Константин Репутация: 1 |
так задача вроде работает..вот толко при выводе тех строк, кот. входят в строку, выводится нули.. не могу понять где ошибка..
прога: PROGRAM4.PAS ( 2.98 килобайт ) Кол-во скачиваний: 467 Модуль: MIKHAL.PAS ( 1.3 килобайт ) Кол-во скачиваний: 461 |
volvo |
Сообщение
#9
|
Гость |
Нет, так не пойдет... Ты укажи строки, в которых программа работает неверно, а то там у тебя черт ногу сломит - ничего не разберешь...
|
priboltik |
Сообщение
#10
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Константин Репутация: 1 |
Нет, так не пойдет... Ты укажи строки, в которых программа работает неверно, а то там у тебя черт ногу сломит - ничего не разберешь... скорее всего где-то здесь Cifr[i] := Cifr[i] + 1; и наверное здесь:
если честно, не очень понимаю, как это здесь делается.. и для чего вообще нужен массив Cifr ....препод написал, а доступно объяснить ему было не судьба... |
volvo |
Сообщение
#11
|
Гость |
Цитата вот толко при выводе тех строк, кот. входят в строку, выводится нули.. В приведенных тобой строках НИЧЕГО не выводится... |
priboltik |
Сообщение
#12
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Константин Репутация: 1 |
|
volvo |
Сообщение
#13
|
Гость |
Да блин!!! ПОКАЖИ, ГДЕ?????
Твою программу же ЧИТАТЬ невозможно, неужели же ты этого не видишь??? |
priboltik |
Сообщение
#14
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Константин Репутация: 1 |
кстати.. а если мы берем переменную прямо из модуля,ее не нужно ведь описывать в главной программе..????
|
volvo |
Сообщение
#15
|
Гость |
Смотря где она описана в модуле...
|
priboltik |
Сообщение
#16
|
Пионер Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Константин Репутация: 1 |
описана она в модуле как параметр в функции
|
Текстовая версия | 12.10.2024 17:04 |