Delphi - Не могу разобратся с savedialog

Аватара пользователя
Njey

Delphi - Не могу разобратся с savedialog

Сообщение Njey »

В программе необходимо сделать возможность копирования файлов по средством savedialog.

Вот код:

If savedialog.Execute then CopyFile (

Pansichar(ExtractFilePath

(Application.ExeName)+'\pas.db'),

Pansichar(SaveDialog1.FileName),

false);

Проблема такая. Несмотря на то, что выделяю несколько файлов копируется всегда только один. Как нужно изменить код, чтобы можно было копировать несколько файлов, желательно любых расширений?

За ранее спасибо.
Аватара пользователя
DillerInc

Re: Delphi - Не могу разобратся с savedialog

Сообщение DillerInc »

Njey, нужно больше конкретики: что,куда...

А так я думаю,что это связано с необходимостью использования флага OFN_ALLOWMULTISELECT в структуре OPENFILENAME.Это всё про WinAPI.Придумайте,как это можно применить к Дельфям.
Аватара пользователя
DillerInc

Re: Delphi - Не могу разобратся с savedialog

Сообщение DillerInc »

Здадача такая. В корневой папке программы лежат следующие файлы:

pas.db

pas.px

pas.val

tepl.db

tepl.px

tepl.val

Необходимо из программы нужные пользователю файлы (те которые он выберет) скопировать в любую директорию которую выберет пользователь.
Аватара пользователя
DillerInc

Re: Delphi - Не могу разобратся с savedialog

Сообщение DillerInc »

Задача,значит такая.Берёшь какой-нибудь материал по этой теме и начинаешь зубрить.Тем более,что я сказал в первом своём посте,в какую сторону нужно копать.И потом говоришь,что конкретно не получается.



Вот нашёл у себя небольшой исходник большой давности.Прикладываю.Как раз по этой теме,но там я не использовал сохранение файлов,только открытие.Т.к. дело было давно,то код далёк от идеального.И там НЕ используется VCL.
Вложения
OpenMulti.rar
(11.1 КБ) 0 скачиваний
OpenMulti.rar
(11.1 КБ) 0 скачиваний
Аватара пользователя
zip000

Re: Delphi - Не могу разобратся с savedialog

Сообщение zip000 »

Njey, все просто

Код:

Код: Выделить всё

var
  i : Integer;
......................................
  if SaveDialog1.Execute then
    for i := 0 to SaveDialog1.Files.Count - 1 do begin
      CopyFile (ИСХОДНЫЙ_ФАЙЛ, Pansichar(SaveDialog1.Files[i]), false);
    end;
Аватара пользователя
Njey

Re: Delphi - Не могу разобратся с savedialog

Сообщение Njey »

Zip000, к сожалению не просто.

var i : Integer;

if

SaveDialog1 .Execute then for i :=

0 to SaveDialog1 .Files.Count - 1

do

begin

CopyFile

(Pansichar(extractfilepatch( Application.ExeNAME)+'\pas.db'),

Pansichar

(SaveDialog1.Files), false);

в таком виде таблица pas.db просто копируется под разными именами.
Аватара пользователя
zip000

Re: Delphi - Не могу разобратся с savedialog

Сообщение zip000 »

Цитата Njey:



в таком виде таблица pas.db просто копируется под разными именами.
Delphi - Не могу разобратся с savedialog




ну что вы написали в 1 посте, то и получили. Смысл сего довльно прост : когда вы выбираете в SaveDialog несколько файлов, количество выбранных файлов храниться в SaveDialog.Files.Count, а доступ к конкретному имени файла осуществляется так SaveDialog.Files[НОМЕР_ФАЙЛА_В_СПИСКЕ_ВЫБРАННЫХ].
Аватара пользователя
Njey

Re: Delphi - Не могу разобратся с savedialog

Сообщение Njey »

Цитата zip000:

к конкретному имени файла

осуществляется так

SaveDialog.Files

[НОМЕР_ФАЙЛА_В_СПИСКЕ_ВЫ

БРАННЫХ].



--------

var i : Integer;...................................... if

SaveDialog1 .Execute then for i :=

0 to SaveDialog1 .Files.Count - 1

do begin CopyFile

(ИСХОДНЫЙ_ФАЙЛ, Pansichar

(SaveDialog1.Files), false); end;



-----------



Значит в место ИСХОДНЫЙ_ФАЙЛ мне нужно подставлять все исходные файлы?

Типа так:

const

afilename : array[1..2] of string=('pas.db', 'pas.px');

var i : Integer;

afilename : array[1..2] of string=('pas.db', 'pas.px');

if

SaveDialog1 .Execute then

begin

for i :=

0 to SaveDialog1 .Files.Count - 1 do

CopyFile

(PansiChar ('afilename'), Pansichar

(SaveDialog1.Files), false); end;

ток теперь вобще копирования не происходит.
Аватара пользователя
detrin

Re: Delphi - Не могу разобратся с savedialog

Сообщение detrin »

Цитата Njey:



Необходимо из программы нужные пользователю файлы (те которые он выберет) скопировать в любую директорию которую выберет пользователь.
Delphi - Не могу разобратся с savedialog




Что-то не совсем понятно, как вы с помощью только одного Savedialog хотите запомнить нужные файлы и папку куда их копировать? Я так понял ни список файлов заранее не известен, ни папка в которую нужно копировать эти файлы.
Аватара пользователя
Njey

Re: Delphi - Не могу разобратся с savedialog

Сообщение Njey »

Detrin в идеале да, список файлов не известен. Вернее он ограничен списком файлов лежащих в директории программы. У меня мало опыта в программирововании, поэтому пытаюсь упростить задачу. Думаю сделать сохранение по определенным комбинациям файлов. Вот тока не совсем получается. Посмотрите предидущий пост. В чем моя ошибка?
Ответить

Вернуться в «Программирование и базы данных»