Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 1

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

Как мне скопировать файл?

Вот три способа:


    {Данный способ использует файловый поток.}
Procedure FileCopy( Const sourcefilename, targetfilename: String );
Var
S, T: TFileStream;
Begin
S := TFileStream.Create( sourcefilename, fmOpenRead );
try
T := TFileStream.Create( targetfilename,
fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
End;

{Данный способ для чтения/записи использует блоки памяти.}
procedure FileCopy(const FromFile, ToFile: string);
var
FromF, ToF: file;
NumRead, NumWritten: Word;
Buf: array[1..2048] of Char;
begin
AssignFile(FromF, FromFile);
Reset(FromF, 1);          { Размер записи = 1 }
AssignFile(ToF, ToFile);  { Открываем выходной файл }
Rewrite(ToF, 1);          { Размер записи = 1 }
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
ClloseFile(FromF);
CloseFile(ToF);
end;

{Данный способ использует LZCopy, добавьте в список USES модуль LZExpand.}
procedure CopyFile(FromFileName, ToFileName: string);
var
FromFile, ToFile: File;
begin
AssignFile(FromFile, FromFileName); { Присваиваем FromFile FromFileName }
AssignFile(ToFile, ToFileName);     { Присваиваем ToFile ToFileName }
Reset(FromFile);                    { Открываем файл для чтения }
try
Rewrite(ToFile);                  { Создаем файл для записи }
try
{ копируем файл, если возвращена отрицательная величина }
{ возбуждаем исключение }
if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0
then
raise EInOutError.Create('Ошибка использования LZCopy')
finally
CloseFile(ToFile);  { Закрываем ToFile }
end;
finally
CloseFile(FromFile);  { Закрываем FromFile }
end;
end;

[000621]