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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2019, 21:48   #1
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию Вставка файлы через 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
Сообщений: 18,922
По умолчанию

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

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

Вообще, я помню на этом форуме мне советовали забыть про абсолютные пути и всегда дополнять их до полных. Путь к текущему каталогу можно получать так:
Код:
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
Сообщений: 902
По умолчанию

Если нужно для диалога 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 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохраниение через 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