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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2008, 23:03   #1
matus
Пользователь
 
Регистрация: 02.11.2007
Сообщений: 20
По умолчанию Копирование файлов

Здравствуйте! Подскажите, пожалуйста, как можно скопировать файлы, выбранные пользователем на FileListBox (с помощью функций MultiSelect) в определённую директорию. Я вот пытаюсь воспользоваться CopyFile(PChar(FileListBox1),'имя нужной директории',true), но пока безуспешно. Просто это достаточно традиционная функция во многих программах, вот я и подумала, может кто сталкивался с этим? Спасибо за внимание.
matus вне форума Ответить с цитированием
Старый 26.02.2008, 23:08   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

В чём безуспешность? Уж не в том ли, что не
Код:
CopyFile(PChar(FileListBox1),'имя нужной директории',true);
, а
Код:
CopyFile(PChar(FileListBox1),'имя нужной директории'+'новое имя файла',true);
?
B_N вне форума Ответить с цитированием
Старый 26.02.2008, 23:23   #3
matus
Пользователь
 
Регистрация: 02.11.2007
Сообщений: 20
По умолчанию

Нет, так не получается...имена должны быть те же самые, а вот имя директории, куда копировать выбранные файлы, задаёт пользователь, вот такая ситуация
matus вне форума Ответить с цитированием
Старый 26.02.2008, 23:38   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от matus Посмотреть сообщение
Нет, так не получается...имена должны быть те же самые, а вот имя директории, куда копировать выбранные файлы, задаёт пользователь, вот такая ситуация
В функцию CopyFile нужно передавать полные пути файлов, независимо от того, такие же они или нет, а не просто 'имя нужной директории'.
B_N вне форума Ответить с цитированием
Старый 26.02.2008, 23:57   #5
matus
Пользователь
 
Регистрация: 02.11.2007
Сообщений: 20
По умолчанию

Я понимаю, но увы, ничего не копируется, просто папка остаётся пуста...у меня подозрение, что просто такое копирование осуществляется вообще другим способом. Спасибо за ответы
matus вне форума Ответить с цитированием
Старый 27.02.2008, 00:08   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от matus Посмотреть сообщение
Я понимаю, но увы, ничего не копируется, просто папка остаётся пуста...у меня подозрение, что просто такое копирование осуществляется вообще другим способом. Спасибо за ответы
Тогда
1. Показывайте содержимое Ваших строк
2. Объявите целую переменную, скажем e : cardinal, после CopyFile ставьте строчку
Код:
e := GetLastError();
и сообщайте, чему она будет равна после неудачи.
B_N вне форума Ответить с цитированием
Старый 27.02.2008, 00:31   #7
matus
Пользователь
 
Регистрация: 02.11.2007
Сообщений: 20
По умолчанию

Получилось e=2
matus вне форума Ответить с цитированием
Старый 27.02.2008, 00:35   #8
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

"The system cannot find the file specified." - Что и требовалось доказать. Видимо проблема вот здесь: PChar(FileListBox1). Чему равна FileListBox1?
-----------------
А еще лучше - обе строки - и откуда, и куда.

Последний раз редактировалось B_N; 27.02.2008 в 00:40.
B_N вне форума Ответить с цитированием
Старый 27.02.2008, 19:14   #9
matus
Пользователь
 
Регистрация: 02.11.2007
Сообщений: 20
По умолчанию

У меня всё-таки получилось, возможно не самый рациональный путь, но делает то, что надо:
progressbar1.Position:=0;
progressbar1.Max:=FileListBox1.SelC ount;
for t:=0 to FileListBox1.Items.Count-1 do
if FileListBox1.Selected[t]=true then begin
iii:=FileListBox1.Items.Strings[t];
CopyFile(PChar(FileListBox1.Directo ry+'\'+iii),PChar('имя нужной директории'+'\'+iii),true);
progressbar1.StepBy(1);
Application.ProcessMessages;
end;
(progressbar отображает процесс копирования, данный объект расположен во вкладке Win32)
matus вне форума Ответить с цитированием
Старый 27.02.2008, 19:34   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Чтобы прогрессбар еще лучше работал, есть CopyFileEx
B_N вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование файлов Artificial Помощь студентам 5 05.06.2008 18:42
Копирование файлов на FTP Dj_smart Общие вопросы Delphi 2 05.03.2008 09:04
копирование файлов matus Общие вопросы Delphi 2 07.11.2007 21:57
Копирование файлов Devil_uu Помощь студентам 2 24.03.2007 20:27