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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2010, 11:04   #1
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию Скопировать файлы

Здравствуйте. Есть Listq : TStringList; где находится список файлов в виде
'D:\Program Files\Acro\Writer\README.HTM'
и необходимо эти файлы скопировать в другой каталог. Подскажите как такое возможно осуществить? При этом необходимо автоматически переименовывать имена одинаковых файлов.
Нашел
Код:
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_RENAMEONCOLLISION;
result:=ShFileOperation(F) = 0;
end;
но как тут использовать TStringList?

Последний раз редактировалось мимо; 06.10.2010 в 11:07.
мимо вне форума Ответить с цитированием
Старый 06.10.2010, 11:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
function WindowsCopyFile(FromFile, ToDir : string) : boolean;
var F : TShFileOpStruct;i:integer;
begin
F.Wnd := 0;
F.wFunc := FO_COPY;
for i:=0 to Listq.count-1 do
 FromFile:=FromFile+Listq[i]+#0;
FromFile:=FromFile+#0#0;
F.pFrom:=pchar(FromFile);
ToDir:=ToDir+#0;
F.pTo:=pchar(ToDir);
F.fFlags := FOF_RENAMEONCOLLISION;
result:=ShFileOperation(F) = 0;
end;
Если не ошибаюсь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2010, 12:08   #3
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию

спасибо. Только странно работает
Если не использовать TStringList и вызвать функцию два раза при копировании двух файлов с одинаковыми именами и при этом уже изначально есть папка "Новая папка", то первый файл скопируется нормально в эту папку, а второй файл перед копированием выдаст вопрос - "Папка "Новая папка"\"Новая папка" не существует. Создать ее? - Да/Нет". Если нажать Да, то и папка не создаться и файл не скопируется. Если - Нет - аналогично.
Почему не используется корневая папка "Новая папка"? Зачем идет попытка создать новую папку?
мимо вне форума Ответить с цитированием
Старый 06.10.2010, 12:57   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
F.fFlags := FOF_RENAMEONCOLLISION or FOF_NOCONFIRMMKDIR ;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как скопировать? Bat{CMD}_Men Операционные системы общие вопросы 4 09.11.2009 11:35
скопировать/вставить snakezx Microsoft Office Excel 2 24.11.2008 17:04
Как скопировать с диска файлы aesoem Общие вопросы Delphi 9 10.05.2008 14:20
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53