Witam,

Mam w CheckListBox zapisane pliki ze ścieżkami np:

c:\test\test2\test01.txt
c:\test\test2\test02.txt
c:\Go\Go1\test01.txt
c:\Go\Go2\test02.txt

W ComboBox podaję katalog docelowy np. d:\Katalog\

Chciałbym teraz te pliki skopiować do podanego katalogu ale z zachowaniem struktury folderów, czyli po skopiowaniu powinno być:

d:\Katalog\test\test2\test01.txt
d:\Katalog\test\test2\test02.txt
d:\Katalog\Go\Go1\test01.txt
d:\Katalog\Go\Go2\test02.txt

Chciałbym użyć następującej procedury:


procedure
TForm1.suitempButton4Click(Sender: TObject);
var
Kopiuj : TSHFileOpStruct;
I : Integer;
S,FullName,FullPath : String;
SubDest : String ;

begin

S := ComboBox12.text; // Katalog docelowy

for I := 0 to CheckListBox2.Items.Count - 1 do
begin
FullName:= ExtractFileName(CheckListBox2.items[i]);
FullPath:= ExtractFilePath(CheckListBox2.items[i]);

  Delete(FullPath, 1,3); //usuwa litere dysku np 'C:'
  SubDest := S + FullPath;

Kopiuj.Wnd := Handle;
Kopiuj.wFunc := FO_COPY; // operacja - kopiowanie
Kopiuj.pFrom := FullPath + FullName#0#0; //zrodlo
Kopiuj.pTo := SubDest; // cel
Kopiuj.fFlags := FOF_ALLOWUNDO;
Kopiuj.fAnyOperationsAborted := False; //
Kopiuj.lpszProgressTitle := 'Właśnie kopiuje...';
ShFileOperation(Kopiuj); //Wykonaj

if ShFileOperation(Kopiuj) <> 0 then // wykonaj
ShowMessage('Pojawił się błąd podczas kopiowania')
else

if Kopiuj.fAnyOperationsAborted then // wykonaj
ShowMessage('Kopiowanie zostało przerwane')

end;
end;

Jednak struktura folderów po skopiowaniu nie jest zachowana.

W jaki sposób ten problem rozwiązać?

Z góry dziękuję za pomoc,
Piotr Murawski