Список форумов Шадринский форум -> Программирование -> Delphi, Pascal, C, C# -> Копирование файлов на Delphi
Начать новую тему   Ответить на тему   вывод темы на печать

Копирование файлов на Delphi

Автор
Сообщение
zBoy
Писатель


Пол: Пол:Муж.
Зарегистрирован: 29.01.2007
Сообщения: 492


Статус: Offline
СообщениеДобавлено: 2007.02.07 09:11.22
Ответить с цитатой
Как файл на делфи копировать можно? Есть проца такая CopyFile, я там параметры не пойму. Помогите новичку... Rolling Eyes
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Dio
Шаман-заводчанин


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 29757


Статус: Offline
СообщениеДобавлено: 2007.02.07 09:13.49
Ответить с цитатой
RTFM. Достаточно подробно написано.
_________________
Йа - водоросль.
Посмотреть профиль Отправить личное сообщение
zBoy
Писатель


Пол: Пол:Муж.
Зарегистрирован: 29.01.2007
Сообщения: 492


Статус: Offline
СообщениеДобавлено: 2007.02.08 09:31.17
Ответить с цитатой
Где? Я не понял... Sad
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
ATX
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 04.07.2006
Сообщения: 69


Статус: Offline
СообщениеДобавлено: 2007.02.08 15:24.40
Ответить с цитатой
F1 лдя кого существует? Там все расписано!

Добавлено спустя 20 минут 1 секунду:

Вот выдернул с нета может поможет

Копирование и удаление файлов в Delphi

Попробуем осуществить копирование файла по частям. Узнаем о том, как удалять непустые каталоги с подкаталогами, а так же еще много полезной информации.

В самом простом случае вопрос копирования файлов очень прост (хотя поступило много пожеланий рассказать именно об этом)! Для этого достаточно посмотреть в хелп по Delphi Smile)

Копирование файлов

В 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;
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Tanis
Запомнил кнопки...


Пол: Пол:Муж.
Зарегистрирован: 18.09.2006
Сообщения: 224


Статус: Offline
СообщениеДобавлено: 2007.02.08 16:40.15
Ответить с цитатой
CopyFile('c:\1.txt','c:\2.txt',true) вся функция Smile и искать не надо
_________________
бр бр....
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.02.08 16:45.13
Ответить с цитатой
для больших файлов не юзабильно.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Tanis
Запомнил кнопки...


Пол: Пол:Муж.
Зарегистрирован: 18.09.2006
Сообщения: 224


Статус: Offline
СообщениеДобавлено: 2007.02.08 20:35.54
Ответить с цитатой
andy ice писал(а):
для больших файлов не юзабильно.

Делфи посутти не юзабильна для большого мне кажеться
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.02.08 20:37.11
Ответить с цитатой
Tanis
не согласен. можно и на дельфи написать сложный продукт

Добавлено спустя 25 секунд:

и вообще это не от средства разрбаотки зависит
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Tanis
Запомнил кнопки...


Пол: Пол:Муж.
Зарегистрирован: 18.09.2006
Сообщения: 224


Статус: Offline
СообщениеДобавлено: 2007.02.08 21:09.59
Ответить с цитатой
Правильно от больной головы Smile
_________________
бр бр....
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.02.08 21:13.09
Ответить с цитатой
ну вот пример - CopyFile. Пока этот file пара мегабайт - еще ладно, задержка мизер. Как только задержка больше 4 секунд, то юзер нервничать начинает, больше 7 секунд - психует. значит нужно вывести прогресс бар с процентовкой. отсюда CopyFile сразу ф топку.

Добавлено спустя 52 секунды:

ой. вывод-то Smile

в дельфи этот прогресс бар рисовать или не в дельфи - разницы нет
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
zBoy
Писатель


Пол: Пол:Муж.
Зарегистрирован: 29.01.2007
Сообщения: 492


Статус: Offline
СообщениеДобавлено: 2007.02.09 13:06.58
Ответить с цитатой
Ну посиба! А то я по англиски понимаю также, как по китайски. Надо будет ентим энглишом заняться... Podmigivanie
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Страница 1 из 1
Начать новую тему   Ответить на тему   вывод темы на печать
Показать сообщения:   
Список форумов Шадринский форум -> Программирование -> Delphi, Pascal, C, C# -> Копирование файлов на Delphi

 
Перейти: 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы