Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2016, 23:09   #1
Mad_Lord
Пользователь
 
Регистрация: 23.01.2016
Сообщений: 14
По умолчанию Проблема со сменой каталогов при чтении файла

Доброго времени суток, товарищи форумчане! Очень прошу найти минутку и объяснить мне как поступить в следующей ситуации: мне необходимо считать информацию из файла save.txt , который лежит в папке с ехе-шником, произвести с ней некоторые операции и записать в файл. Вот начало и конец этой функции :

...

Код:
 assignFile(input, 'save.txt');
 reset(input);
 readln(input);

 kalendar_razmer:=0;

 While not EOF(input) do Begin
                         inc (Kalendar_razmer);
                         Setlength (kalendar, Kalendar_razmer);
                         readln (input, kalendar[Kalendar_razmer - 1]);
                         End;
 CloseFile (input);
 //считывание окончено

...


Код:
//показать меню сохранения
SaveDialog1.FileName := FName;
if SaveDialog1.Execute then
 begin
  FName := SaveDialog1.FileName;
  Memo1.Lines.SaveToFile(FName+'.txt');
 end;
//файл записан



Проблема состоит в следующем - 1 раз программа выполняется без каких-либо нареканий с моей стороны, но потом, если новый файл сохранен не в папке с прогой, то при повторном выполнении операции с другими данными появляется уведомление об ошибке: файл save.txt вроде бы как не найден. Пожалуйста подскажите, можно ли как-то сбросить путь открытия файла до коренной папки программы, причем адрес должен быть относительным т.е. не привязанным к конкретным дискам и адресам. Заранее спасибо!
Mad_Lord вне форума Ответить с цитированием
Старый 19.08.2016, 23:22   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ExtractFilePath(Application.ExeName )+'save.txt'
Да и в SaveDialog можно не менять рабочий каталог, там в свойствах управляется этим
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.08.2016, 23:39   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вне зависимости от того, как настроен SaveDialog
Цитата:
Да и в SaveDialog можно не менять рабочий каталог, там в свойствах управляется этим
всё равно, если нужно обращаться к файлам/папкам, которые лежат рядом с EXE-шником, нужно делать:
Код:
.... ExtractFilePath(Application.ExeName)+'\save.txt'
рабочая папка может изначально не совпадать с той, откуда запускается EXE, поэтому и нужно получать полный путь к каталогу запуска
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.08.2016, 11:39   #4
Mad_Lord
Пользователь
 
Регистрация: 23.01.2016
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Да и в SaveDialog можно не менять рабочий каталог, там в свойствах управляется этим
Спасибо за совет, изменил свойство ofNoChangeDir - теперь все отлично)
Mad_Lord вне форума Ответить с цитированием
Старый 21.08.2016, 10:58   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы зря проигнорировали мой пост. я объяснил, почему нужно обязательно получать полный путь к папке с программой...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема при чтении данных из файла Eshansky Visual C++ 1 07.07.2013 21:08
Ошибка при чтении файла Стремящийся Общие вопросы по Java, Java SE, Kotlin 4 03.07.2012 16:50
Проблема при чтении из бинарного файла twiss Помощь студентам 0 02.10.2010 00:04
Ошибка при чтении из файла alex_alpha Общие вопросы C/C++ 5 08.08.2010 20:28
Проблема при чтении из файла Satorin Общие вопросы Delphi 2 17.12.2008 11:32