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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2012, 04:23   #1
Makin_tosh
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 24
По умолчанию Копирование с SHFileOperation

Здравствуйте уважаемые!!! Для копирования файлов использую следующий код:
Код:
char *DestStr = DestStrokaNewText.c_str();
char SrcStrTemp[65535]={0}, *SrcStr = SrcStrTemp;
for (int i = 0; i < Contr->Items->Count; i++)
{
strcat(SrcStr, PathContr.c_str());
strcat(SrcStr, Contr->Items->Strings[i].t_str());
strcat(SrcStr, ";");
}
OperationFileDirThreadWin *OperationFileDirThreadWin_ = new OperationFileDirThreadWin(true);
OperationFileDirThreadWin_->Priority = tpNormal;
OperationFileDirThreadWin_->SrcStroka_Th = SrcStr;
OperationFileDirThreadWin_->DestStroka_Th = DestStr;
OperationFileDirThreadWin_->TypeOperation = 1;
OperationFileDirThreadWin_->Resume();
Собственно сама функция в потоке:
Код:
bool SHOperationFile(HWND ParentWindow, AnsiString &SourceFile, AnsiString &DestFile,
					 int TypeOperation)
  {
	 SHFILEOPSTRUCT SHFOStruct;
	 ZeroMemory(&SHFOStruct, sizeof(SHFOStruct));
	 SHFOStruct.hwnd = ParentWindow;
	 switch (TypeOperation)
	 {
		 case 1: SHFOStruct.wFunc = FO_COPY; break;
		 case 2: SHFOStruct.wFunc = FO_MOVE; break;
		 case 3: SHFOStruct.wFunc = FO_DELETE; break;
		 case 4: SHFOStruct.wFunc = FO_RENAME; break;
	 }
	 SourceFile = ReplaceStr(SourceFile, ';', '\0');
	 SHFOStruct.pFrom = SourceFile.c_str();
	 SHFOStruct.pTo = DestFile.c_str();
	 SHFOStruct.fFlags = FOF_ALLOWUNDO | FOF_NOERRORUI;
	 return !SHFileOperation(&SHFOStruct);
  }
Но, выставляю копировать очень много файлов, имена которых ну очень длинные, либо срабатывает исключение, либо в переменной pFrom оказывается не весь список копируемых файлов. Как же быть, подскажите?
Makin_tosh вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копирование lilek Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 14.12.2010 20:54
Копирование Bat{CMD}_Men Общие вопросы Delphi 3 18.04.2010 19:32
SHFileOperation Function не удаляет Roont Общие вопросы C/C++ 3 15.07.2009 10:33
Копирование VVVasek Microsoft Office Excel 13 20.09.2008 23:12