Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Работа с файлами в Паскале


Автор: zetxi815eb 24.1.2007, 06:47
Задача такая. Прочитать из файла input.txt числовую последовательность. Преобразовать и вывести её в файл output.txt . Вот кусок этого кода: 
Код

assign (tin,'input.txt');
reset (tin);
assign (tout,'output.txt');
rewrite (tout);



Проблема вот в чём. Он ищет файлы input.txt  и  output.txt не в папке, где лежит файл с программой с расширением *.pas и куда компилируется файл, а в папке tp7\bin. Если их там нет, компилятор выдаёт ошибку File not found.

Как настроить компилятор, чтоб он искал эти файлы там, куда он компилирует программу??? Заранее спасибо!

Автор: LesnoyChelovek 24.1.2007, 10:05
Полный путь укажи к файлам.

Автор: zetxi815eb 24.1.2007, 21:28
LesnoyChelovek, можно, но не хотелось бы. В универе компилятор работает правильно, значит мой просто настроить надо.

Автор: Zero 24.1.2007, 21:40
Разные настройки путей: Options->Directories но вполне возможно в разных версиях паскаля это место настроек в другом месте.

Автор: volvo877 25.1.2007, 12:59
Цитата(Zero @  24.1.2007,  20:40 Найти цитируемый пост)
Разные настройки путей: Options->Directories

Это здесь совершенно не при чем... Эти настройки указывают компилятору (а не программе, понимаешь?) гда искать файлы необходимые для того, чтобы собрать EXE-файл... Все, что происходит во время выполнения - другая история... Если текущая директория (то, что показывается в строке Directory Name при вызове File -> Change Dir...) не содержит нужных файлов, то в любом случае будет ошибка...

То есть надо либо вручную (или в PIF-файле) прописать рабочую директорию после старта IDE, либо делать это программно:
Код
uses dos;
function get_path: string;
var
  P: PathStr; D: DirStr; N: NameStr; E: ExtStr;
begin
  fsplit(paramstr(0), D, N, E);
  get_path := D;
end;
...
assign(f, get_path + 'input.txt'); reset(f);
...

Автор: Shadowlord 25.1.2007, 14:06
chdir('<путь к директории>'); // инициализация рабочей директории 


Автор: volvo877 25.1.2007, 17:24
Shadowlord, только вот зачем менять через ChDir - ты не подумал? Потом же еще восстанавливать назад придется...

Автор: Shadowlord 25.1.2007, 18:04
volvo877 зачем искать лишние сложности там где их нет

Автор: Zero 25.1.2007, 19:48
Цитата(volvo877 @  25.1.2007,  12:59 Найти цитируемый пост)
assign(f, get_path + 'input.txt');

volvo877, а где сказано в задании, что нужно путь программно определять к файлу...
Воопрос вообщето связан с настройкой... smile 
Тут пробелема в том, как я понял, после компиляции, программа (*.exe) не находит в том месте где она есть файла... У меня лично такого неразу небыло, но копать в любом случае нужно либо в настроках, либо переустановить паскаль (занемает он не так уж и много, поэтому такое можно позволить)...
Обходы для определения пути некчему. smile 

Автор: zetxi815eb 25.1.2007, 23:15
Вот...я тож думаю, дело в настройках компилятора...тк у других такой же Паскаль и всё работает.

Автор: remax 9.2.2007, 19:52
А ParamSt(0) использовать не получается?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)