Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2019, 21:48   #1
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 93
По умолчанию Вставка файлы через SaveDialog

Здравствуйте, хочу скопировать файл:
Код:
procedure TForm1.btn2Click(Sender: TObject);
var
 FName : string;
begin
  if SaveDialog1.Execute then
  begin
  FName := SaveDialog1.FileName;
  ShowMessage('Выбранный каталог = '+FName);
  CopyFile(Pchar('data.ini'), Pchar(FName), True);
end;
В ShowMessage катулог и имя файла выводится верно, но ничего не копируется.
Подскажите пожалуйста, что не так?
Alex711 вне форума Ответить с цитированием
Старый 10.02.2019, 22:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,050
По умолчанию

У тебя SaveDialog скорее всего изменил рабочий каталог и data.ini не находит. У диалога где-то в опциях есть возможность избежать изменение рабочего каталога
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.02.2019, 22:50   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,593
По умолчанию

Вообще, я помню на этом форуме мне советовали забыть про абсолютные пути и всегда дополнять их до полных. Путь к текущему каталогу можно получать так:
Код:
pathToCurrentDirectory:=extractFilePath( application.exeName );
После этого полученным путём предварять относительные пути. В вашем случае
Код:
CopyFile(Pchar( pathToCurrentDirectory + 'data.ini' ), Pchar(FName), True);
___

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
советую забыть про относительные пути.
всегда дополняйте их до полных.

а в вашей программе видимо есть диалоги(TOpenDialog/TSaveDialog/etc)
они меняют текущую директорию(директорию относительно которой относительный путь и дополняется автоматом)

ну а ответ дан выше, я просто уточнил причины.
Отсюда: http://www.programmersforum.ru/showthread.php?t=131971 (моя старая тема, где я выложил кусок своего г-нокода)
Вадим Мошев вне форума Ответить с цитированием
Старый 11.02.2019, 08:57   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 899
По умолчанию

Если нужно для диалога SaveDialog
Код:
SaveDialog1.InitialDir:= extractFilePath(application.exeName) + '\'; ну либо путь можно сохранять например в ini и его потом использовать при повторном открытии, запомнить так сказать последний путь 
if SaveDialog1.Execute then
..................................
либо так
Код:
SaveDialog1.InitialDir:= ExtractFilePath(ParamStr(0)) + '\';
if SaveDialog1.Execute then
..................................
а все остальное вам написали выше

Последний раз редактировалось Aliens_wolfs; 11.02.2019 в 09:08.
Aliens_wolfs вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохраниение через SaveDialog Asblue Помощь студентам 1 02.12.2010 12:44
Вставка данных в Excel через ADO Slava БД в Delphi 4 19.07.2009 22:22
Вставка строки через n-е количество строк glazomer Microsoft Office Excel 5 12.03.2009 13:20
Проблемы с сохранением файла через SaveDialog Волк Общие вопросы Delphi 4 05.02.2009 04:27