Тут сразу несколько ошибок:
1. Если это юникодная Дельфи, то нет такой функции CopyFile(PAnsiChar,PWideChar,boolean). Надо использовать либо везде PAnsiChar либо везде PWideChar (который просто PChar по умолчанию).
2. Надеюсь файлы с полным путем в ListBox1?
3. Функция CopyFile копирует ФАЙЛ. Т.е. ей надо сформировать полное имя файла назначения, походу эта функция не поддерживает автоматическое именование при копировании в папку.
Вот пример с выводом отладочной информации (в дополнение к твоим компонентам брось еще TMemo на форму):
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | procedure TForm1 . Button1Click(Sender: TObject);
var
I : Integer ;
tgtDir : String ;
fileName : String ;
tgtFileName : String ;
ErrCode : Cardinal ;
begin
Memo1 . Lines . Clear;
Memo1 . Lines . Add( 'Start coping' );
tgtDir := IncludeTrailingPathDelimiter(DirectoryListBox1 . Directory);
Memo1 . Lines . Add( 'Target directory: ' + tgtDir);
Memo1 . Lines . Add( '' );
For I := 0 To ListBox1 . Items . Count- 1 Do
Begin
fileName := ListBox1 . Items[i];
If Not FileExists(fileName)
Then Memo1 . Lines . Add(Format( 'File "%s" does not exist' ,[fileName]))
Else
Begin
tgtFileName := tgtDir + ExtractFileName(fileName);
Memo1 . Lines . Add(Format( 'Coping "%s" to "%s"...' ,[fileName,tgtFileName]));
If CopyFile( PChar (fileName), PChar (tgtFileName), false )
Then Memo1 . Lines . Add( 'Done' )
Else
Begin
ErrCode := GetLastError;
Memo1 . Lines . Add(Format( 'FAILED! Error code is %d' ,[ErrCode]));
End ;
End ;
Memo1 . Lines . Add( '' );
End ;
end ;
|