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

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

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2018, 11:52   #1
AsyaWill
 
Регистрация: 07.04.2018
Сообщений: 7
По умолчанию Копирование в компоненте ShellListview

Подскажите в чем проблема?Не копирует в ShellListView2
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);   
var
  FOS: TSHFileOpStruct;
  FileOp: HRESULT;
  i: Integer;
  FPath: String;
begin
  With FOS do
    begin
       For i:=0 to ShellListView1.Items.Count-1 do
        If ShellListView1.Items[i].Selected then
          begin
            FPath:=ShellListView1.Folders[i].PathName + #0 + FPath + #0 + #0;  
            FOS.Wnd:= Application.Handle;
            FOS.wFunc:= FO_COPY;
            FOS.pFrom:=@FPath[1]; 
            FOS.pTo:=Pchar(ShellListView2.RootFolder.PathName);   
            FOS.fFlags:= FOF_RENAMEONCOLLISION or FOF_MULTIDESTFILES;   
            FOS.fAnyOperationsAborted:= False;  
            FOS.hNameMappings:= 0;
            FOS.lpszProgressTitle:= 0;  
          end;
  FileOp:= SHFileOperation(FOS);
end;
ShellListView1.Refresh;
ShellListView2.Refresh;
end;
AsyaWill вне форума Ответить с цитированием
Старый 27.05.2018, 19:33   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Цитата:
Сообщение от AsyaWill Посмотреть сообщение
Код:
FPath:=ShellListView1.Folders[i].PathName + #0 + FPath + #0 + #0;
- а вот эти #0 что означают? Это правильно? Я Делфи не очень хорошо знаю, если что.
А, это типа символ нуля что-ли? А зачем там столько нулей? Это не ошибка случайно?

Последний раз редактировалось Cuprum5; 27.05.2018 в 19:36.
Cuprum5 вне форума Ответить с цитированием
Старый 27.05.2018, 21:09   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Куча тем и везде одно и то же. Дебагером надо учиться пользоваться (нужен для этого один палец любой руки)
Код:
FileOp:= SHFileOperation(FOS);
должно быть внутри цикла for
Нули, естественно, не нужны, они в данном случае отрезают конец. Собственно, и сам конец не нужен
eoln вне форума Ответить с цитированием
Старый 29.05.2018, 20:49   #4
AsyaWill
 
Регистрация: 07.04.2018
Сообщений: 7
По умолчанию

Исправила,но теперь копируется только один файл.Плюс то,что я копирую стало загружаться в папку ,где находится эта программа и создается копия папки в левом окне без расширения той папки,которая указана в левом окне(то есть в ту ,в которую мы копируем)
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
    //копирование
var
  FOS: TSHFileOpStruct;
  FileOp: HRESULT;
  i: Integer;
  FPath: String;
begin
  With FOS do
    begin
       For i:=0 to ShellListView1.Items.Count-1 do
        If ShellListView1.Items[i].Selected then
          begin
            FPath:=ShellListView1.Folders[i].PathName+#0+FPath;   //получение пути всех фалов
            FOS.Wnd:= Application.Handle;
            FOS.wFunc:= FO_COPY;
            FOS.pFrom:=@FPath[1]; //указатель на строку с именем исходного файла
            FOS.pTo:=Pchar(ShellListView2.RootFolder.PathName);  //указатель на строку с именем файла в который копируется исходный файл
            FOS.fFlags:= FOF_RENAMEONCOLLISION or FOF_MULTIDESTFILES;   //указывает что ...
            FOS.fAnyOperationsAborted:= False;   //true если операция была прервана афдыу в ином случае
            FOS.hNameMappings:=nil;
            FOS.lpszProgressTitle:=nil;  //указатель на строку заголовка для окна прогресса
            FileOp:= SHFileOperation(FOS);
          end;
end;
ShellListView1.Refresh;
ShellListView2.Refresh;
end;
Изображения
Тип файла: jpg Безымянный.jpg (25.1 Кб, 96 просмотров)
Тип файла: jpg Безымянный1.jpg (90.2 Кб, 113 просмотров)
AsyaWill вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эскизы в ShellListView artemavd Общие вопросы Delphi 5 23.01.2015 23:03
ShellListView SiAlex Компоненты Delphi 8 28.05.2014 21:42
shelllistview копирование и другое OnlyEmerica Компоненты Delphi 1 18.09.2010 21:33
ShellListView sezam Компоненты Delphi 0 27.06.2008 06:58
ShellListView ant_f_moro Компоненты Delphi 0 06.01.2008 22:42