Как файл на делфи копировать можно? Есть проца такая CopyFile, я там параметры не пойму. Помогите новичку... |
RTFM. Достаточно подробно написано. _________________ Йа - водоросль. |
F1 лдя кого существует? Там все расписано!
Добавлено спустя 20 минут 1 секунду: Вот выдернул с нета может поможет Копирование и удаление файлов в Delphi Попробуем осуществить копирование файла по частям. Узнаем о том, как удалять непустые каталоги с подкаталогами, а так же еще много полезной информации. В самом простом случае вопрос копирования файлов очень прост (хотя поступило много пожеланий рассказать именно об этом)! Для этого достаточно посмотреть в хелп по Delphi ) Копирование файлов В Delphi есть функция CopyFile. Вот ее описание из хелпа BOOL CopyFile( LPCTSTR lpExistingFileName, // pointer to name of an existing file LPCTSTR lpNewFileName, // pointer to filename to copy to BOOL bFailIfExists // flag for operation if file exists ); Параметры передаваемые в эту функцию: Указатель на имя существующего файла (нуль терминированная строка т.е. тип PChar! ) Указатель на имя файла, который будет создан/перезаписан после копирования (нуль терминированная строка т.е. тип PChar! ) Если этот параметр True и файл с таким именем уже существует, то функция вернет False . Если же файл, с именем указанным во втором параметре существует и в качестве третьего параметра передан False - то функция перезапишет файл и благополучно завершится. Приведу небольшой пример использования этой функции. Создайте на диске C:\ файл '1.txt' , а на форму поставьте кнопку: procedure TForm1.Button1Click(Sender: TObject); begin if CopyFile('c:\1.txt','c:\2.txt',true) then ShowMessage('Файл успешно скопирован!') else ShowMessage('Неудача!'); end; Для того, чтобы точнее узнать при возникновении ошибки, что же все таки произошло, надо воспользоваться функцией GetLastError , которая возвращает код последней ошибки (формат DWORD). Теперь мы немного изменим пример: procedure TForm1.Button1Click(Sender: TObject); begin if CopyFile('c:\1.txt','c:\2.txt',true) then ShowMessage('Файл успешно скопирован!') else ShowMessage('Ошибка! Вот ее код: '+IntToStr(GetLastError)); end; Таким образом нажав второй раз на кнопку мы получим сообщение: "Ошибка! Вот ее код: 80". Это говорит нам, что файл существует. Коды всех ошибок можно легко найти в хелпе. Для углубления рассматриваемого вопроса приведу пример копирования файлов с помощью файлового потока (TFileStream). В приведенной пользовательской функции введены два дополнительных параметра From и Count, которые указывают, соответственно, с какого и по какой байт нужно копировать файл. Если необходимо скопировать весь файл, то необходимо передать нули. Вот код этой функции: function MyCopyFile( InFile,OutFile: String; From,Count: Longint ): Longint; var InFS,OutFS: TFileStream; begin InFS := TFileStream.Create( InFile, fmOpenRead );//создаем поток OutFS := TFileStream.Create( OutFile, fmCreate );//создаем поток InFS.Seek( From, soFromBeginning );//перемещаем указатель в From Result := OutFS.CopyFrom( InFS, Count ); InFS.Free;//освобождаем OutFS.Free;//освобождаем end; |
CopyFile('c:\1.txt','c:\2.txt',true) вся функция и искать не надо _________________ бр бр.... |
для больших файлов не юзабильно. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): для больших файлов не юзабильно.Делфи посутти не юзабильна для большого мне кажеться |
Tanis
не согласен. можно и на дельфи написать сложный продукт Добавлено спустя 25 секунд: и вообще это не от средства разрбаотки зависит _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Правильно от больной головы _________________ бр бр.... |
ну вот пример - CopyFile. Пока этот file пара мегабайт - еще ладно, задержка мизер. Как только задержка больше 4 секунд, то юзер нервничать начинает, больше 7 секунд - психует. значит нужно вывести прогресс бар с процентовкой. отсюда CopyFile сразу ф топку.
Добавлено спустя 52 секунды: ой. вывод-то в дельфи этот прогресс бар рисовать или не в дельфи - разницы нет _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Ну посиба! А то я по англиски понимаю также, как по китайски. Надо будет ентим энглишом заняться... |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |