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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2019, 12:55   #1
ger555
Новичок
Джуниор
 
Регистрация: 01.07.2019
Сообщений: 1
По умолчанию Не работает сохранение через проводник Win после активации компонента SaveDialog

Всем привет.

Ниже фрагмент кода:

Код:
function WindowsCopyFile(FromFile, ToDir : string) : boolean;
var F : TShFileOpStruct;
begin
  F.Wnd := 0; F.wFunc := FO_COPY;
  FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);
  ToDir:=ToDir+#0; F.pTo:=pchar(ToDir);
  F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
  result:=ShFileOperation(F) = 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if savedialog1.execute then begin 
  if not WindowsCopyFile('C:\1.txt', pchar(savedialog1.filename)) then
    ShowMessage('Copy Failed');
end;
end;
При активации компонента SaveDialog копирование через API категорически отказывается работать, причем даже если вызов функции SaveDialog1.execute осуществляется из другой процедуры где-нибудь в программе. Без SaveDialog'a файл льется на ура...

Код:
function WindowsCopyFile(FromFile, ToDir : string) : boolean;
var F : TShFileOpStruct;
begin
  F.Wnd := 0; F.wFunc := FO_COPY;
  FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);
  ToDir:=ToDir+#0; F.pTo:=pchar(ToDir);
  F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
  result:=ShFileOperation(F) = 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not WindowsCopyFile('C:\1.txt', 'С:\1\') then
    ShowMessage('Copy Failed');
end;
Предполагаю, что в буфере после этого компонента что-то остается. Можете подсказать фрагмент кода, где осуществить выбор директории для копирования можно через SaveDialog, а само копирование провести именно через проводник WIn. (Выбрал директорию, нажал кнопку и пошло копирование с отображением прогресса)

Спасибо.

______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Serge_Bliznykov; 01.07.2019 в 13:09.
ger555 вне форума Ответить с цитированием
Старый 01.07.2019, 13:12   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

погодите, а как Вы через savedialog выбираете папку?

поставьте вывод сообщения:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if savedialog1.execute then 
  ShowMessage(savedialog1.filename);
end;
и посмотрите, что там.
Вангую, что там не директория.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.07.2019, 13:21   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

1.
if not WindowsCopyFile('C:\1.txt', pchar(savedialog1.filename)) then

function WindowsCopyFile(FromFile, ToDir : string) : boolean;

2. if not WindowsCopyFile('C:\1.txt', 'С:\1\') then
if not WindowsCopyFile('C:\1.txt', pchar(savedialog1.filename)) then

C:\1\1\ есть папка
saveDialog1.filename есть файл
Цитата:
(Выбрал директорию, нажал кнопку и пошло копирование с отображением прогресса)
нет выбрал ФАЙЛ в папке.
ExtractFileDir / ExtractFileDir

Цитата:
где осуществить выбор директории для копирования можно через SaveDialog,
function SelectDirectory
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SaveDialog. Повторное сохранение Shouldercannon Общие вопросы Delphi 9 25.03.2015 16:52
Excel и SaveDialog не работает! kta87 Общие вопросы Delphi 1 24.02.2012 08:24
сохранение картинки с компонента Image через SavePictureDialog Karina89 Помощь студентам 5 25.05.2011 21:59
Сохраниение через SaveDialog Asblue Помощь студентам 1 02.12.2010 12:44
Сохранение в savedialog Михаил Юрьевич Общие вопросы Delphi 5 23.10.2009 18:01