Программа требует передачи ей в параметре имени файла, из которого она считывает параметры, наподобие такого:
Код:
program.exe filename.txt
При этом, если имя файла указано без полного пути, он ищется в текущем каталоге.
1) При пошаговой отладке и при нажатии кнопки "запустить" могут использоваться разные текущие каталоги, в одном из котором нужный файл есть, а в другом — нет. Чтобы проверить этот вариант, нужно указать полный путь к входному файлу:
Код:
program.exe C:\Data\filename.txt
Также убедитесь, что при пошаговой отладке и при нажатии кнопки "запустить" используется один и тот же параметр.
2) Маловероятно, но входной файл может быть открыт в другой программе, которая не даёт его открыть (а при пошаговой отладке вы эту программу не запускаете).
3) Программа на самом деле запускается, находит всё и обрабатывает правильно, но делает это так быстро, что вы не успеваете заметить окно консоли (которое по окончании работы закрывается). Чтобы проверить этот вариант, нужно перед последним "
end." добавить "
ReadLn;". Программа остановится и не закроется, пока пользователь не нажмёт <Enter>.
Общий принцип отладки без отладчика (если эти три вероятных причины не подтвердятся): нужно сначала убедиться, что программа запускается (из нужного каталога, с нужными параметрами, и т.п.). Потом нужно убедиться, что выполняется первая строчка, для этого в начале нужно поставить отладочный вывод (
WriteLn('Контрольная точка 0');), потом убедиться, что после первой строчки управление переходит ко второй (поставить отладочный вывод между первой и второй), и т.д. Так можно локализовать ту строку, после которой программа вылетает.