![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Не могу разобратся с savedialog |
|
Delphi - Не могу разобратся с savedialog
|
Новый участник Сообщения: 7 |
В программе необходимо сделать возможность копирования файлов по средством savedialog.
Вот код: If savedialog.Execute then CopyFile ( Pansichar(ExtractFilePath (Application.ExeName)+'\pas.db'), Pansichar(SaveDialog1.FileName), false); Проблема такая. Несмотря на то, что выделяю несколько файлов копируется всегда только один. Как нужно изменить код, чтобы можно было копировать несколько файлов, желательно любых расширений? За ранее спасибо. |
|
Отправлено: 09:48, 10-03-2008 |
![]() Ветеран Сообщения: 540
|
Профиль | Отправить PM | Цитировать Я бы решал задачу по-другому.
Через Opendialog получаем список копируемых файлов. Далее с помощью SHBrowseForFolder получаем папку куда будем их копировать. Вот пример: uses ShellAPI, ShlObj; procedure TForm1.Button1Click(Sender: TObject); var TitleName: string; lpItemID: PItemIDList; BrowseInfo: TBrowseInfo; DisplayName: array[0..MAX_PATH] of char; TempPath: array[0..MAX_PATH] of char; begin FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); BrowseInfo.hwndOwner := Form1.Handle; BrowseInfo.pszDisplayName := @DisplayName; TitleName := 'Please specify a directory'; BrowseInfo.lpszTitle := PChar(TitleName); BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS; lpItemID := SHBrowseForFolder(BrowseInfo); if lpItemId <> nil then begin SHGetPathFromIDList(lpItemID, TempPath); ShowMessage(TempPath); GlobalFreePtr(lpItemID); end; end; |
------- Отправлено: 23:45, 15-03-2008 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Ну,хоть кто-то предложил трезвое решение
![]() detrin, спасибо за SHBrowseForFolder. |
------- Отправлено: 09:49, 16-03-2008 | #12 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать 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); то -ошбика. |
Отправлено: 13:13, 17-03-2008 | #13 |
![]() Ветеран Сообщения: 540
|
Профиль | Отправить PM | Цитировать Njey
Что за ошибка? У меня всё работает. |
------- Отправлено: 20:33, 17-03-2008 | #14 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Detrin, ошибка оказалась другого плана. С ней все кончено. Не понятно другое. В опен-диалог я прописывая имя исходного файл. И путь. В данном случае диск 'с'. При открыти на диск 'с'
копируется выбранный файл с именем прописал в диалоге.(в(Pansichar (OpenDialog1 .Files[i]), 'c:\'+'рas.db', false); В данном случае раs.db. И изменить его на правильное могу только с помощью переименования. И соответственно SHBrowseForFolder не видет списка файлов. Я так понял, что диалогом должен был откры вать список копируемых файлов, а SHBrowseForFolder указывает папку куда копирывать. Но ни чего такого нет. Может еще что прописать надо? |
Отправлено: 16:13, 18-03-2008 | #15 |
![]() Ветеран Сообщения: 540
|
Профиль | Отправить PM | Цитировать Несовсем понял в чём вы не разобрались. Попробую ещё раз объяснить.
Цитата detrin:
|
|
------- Отправлено: 21:14, 18-03-2008 | #16 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Принтер - не могу разобратся с подачей бумаги на canon mp630 | ZGG | Прочее железо | 6 | 12-11-2009 11:10 | |
PowerShell - [решено] Не могу разобратся с Convertto-html | glazemir | Скриптовые языки администрирования Windows | 3 | 26-06-2009 08:26 | |
Помагите разобратся!!!!! | MIXAA | Ноутбуки | 3 | 13-04-2008 14:23 | |
Delphi - Delphi, savedialog.options | Roman Go | Программирование и базы данных | 5 | 23-07-2004 23:56 |
|