![]() |
Не могу разобратся с savedialog
В программе необходимо сделать возможность копирования файлов по средством savedialog.
Вот код: If savedialog.Execute then CopyFile ( Pansichar(ExtractFilePath (Application.ExeName)+'\pas.db'), Pansichar(SaveDialog1.FileName), false); Проблема такая. Несмотря на то, что выделяю несколько файлов копируется всегда только один. Как нужно изменить код, чтобы можно было копировать несколько файлов, желательно любых расширений? За ранее спасибо. |
Njey, нужно больше конкретики: что,куда...
А так я думаю,что это связано с необходимостью использования флага OFN_ALLOWMULTISELECT в структуре OPENFILENAME.Это всё про WinAPI.Придумайте,как это можно применить к Дельфям. |
Здадача такая. В корневой папке программы лежат следующие файлы:
pas.db pas.px pas.val tepl.db tepl.px tepl.val Необходимо из программы нужные пользователю файлы (те которые он выберет) скопировать в любую директорию которую выберет пользователь. |
Вложений: 1
Задача,значит такая.Берёшь какой-нибудь материал по этой теме и начинаешь зубрить.Тем более,что я сказал в первом своём посте,в какую сторону нужно копать.И потом говоришь,что конкретно не получается.
Вот нашёл у себя небольшой исходник большой давности.Прикладываю.Как раз по этой теме,но там я не использовал сохранение файлов,только открытие.Т.к. дело было давно,то код далёк от идеального.И там НЕ используется VCL. |
Njey, все просто
Код:
var |
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[i]), false); в таком виде таблица pas.db просто копируется под разными именами. |
Цитата:
|
Цитата zip000:
к конкретному имени файла осуществляется так SaveDialog.Files [НОМЕР_ФАЙЛА_В_СПИСКЕ_ВЫ БРАННЫХ]. -------- var i : Integer;...................................... if SaveDialog1 .Execute then for i := 0 to SaveDialog1 .Files.Count - 1 do begin CopyFile (ИСХОДНЫЙ_ФАЙЛ, Pansichar (SaveDialog1.Files[i]), 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[i]), false); end; ток теперь вобще копирования не происходит. |
Цитата:
|
Detrin в идеале да, список файлов не известен. Вернее он ограничен списком файлов лежащих в директории программы. У меня мало опыта в программирововании, поэтому пытаюсь упростить задачу. Думаю сделать сохранение по определенным комбинациям файлов. Вот тока не совсем получается. Посмотрите предидущий пост. В чем моя ошибка?
|
Я бы решал задачу по-другому.
Через Opendialog получаем список копируемых файлов. Далее с помощью SHBrowseForFolder получаем папку куда будем их копировать. Вот пример: Код:
uses ShellAPI, ShlObj; Код:
var |
Ну,хоть кто-то предложил трезвое решение :)
detrin, спасибо за SHBrowseForFolder. |
Detrin еще просьба еси можно.
"Ну а далее, как уже писал выше *zip000*, делаем копирование файлов: Code: --------- var i : Integer; ....................................... if OpenDialog1.Execute then for i := 0 to OpenDialog1.Files.Count - 1 do begin CopyFile (Pansichar(OpenDialog1.Files[i]), ПУТЬ_КУДА_КОПИРУЕМ+ИМЯ_ФАЙЛА, false); end;" В каком формате записывается "ПУТЬ_КУДА_КОПИРУЕМ+ИМЯ_ФАЙЛА" Есле писать (Pansichar(OpenDialog1.Files[i]), 'c:\'+'рas.db', false); то -ошбика. |
Njey
Что за ошибка? У меня всё работает. |
Detrin, ошибка оказалась другого плана. С ней все кончено. Не понятно другое. В опен-диалог я прописывая имя исходного файл. И путь. В данном случае диск 'с'. При открыти на диск 'с'
копируется выбранный файл с именем прописал в диалоге.(в(Pansichar (OpenDialog1 .Files[i]), 'c:\'+'рas.db', false); В данном случае раs.db. И изменить его на правильное могу только с помощью переименования. И соответственно SHBrowseForFolder не видет списка файлов. Я так понял, что диалогом должен был откры вать список копируемых файлов, а SHBrowseForFolder указывает папку куда копирывать. Но ни чего такого нет. Может еще что прописать надо? |
Несовсем понял в чём вы не разобрались. Попробую ещё раз объяснить.
Цитата:
|
Время: 19:26. |
Время: 19:26.
© OSzone.net 2001-