Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Быстрое копирование файла

Delphi , Файловая система , Файлы

Быстрое копирование файла

Кто тут размножался в прошлом году? (Кто ксерил.)


procedure CopyFile(Source, Dest: string);
var
  SrcFile: Integer;
  DestFile: Integer;
  S: string;
  RetCode: Longint;
  OpenFileBuf: TOFStruct;
  FName: array[0..255] of Char;
begin
  StrPCopy(FName, Source);
  SrcFile := LZOpenFile(FName, OpenFileBuf, of_Read);
  StrPCopy(FName, Dest);
  DestFile := LZOpenFile(FName, OpenFileBuf, of_Create);

  RetCode := LZCopy(SrcFile, DestFile);
  if RetCode >= 0 then
  begin
    LZClose(SrcFile);
    LZClose(DestFile);
  end
  else
  begin
    Str(RetCode, S);
    MessageDlg('Не могу скопировать ' + Source + ' в ' +
      Dest + #13 + 'Код ошибки = ' + S, mtError, [mbOk], 0);
  end;
end;

Here is the translation of the content into Russian:

Процедура CopyFile, написанная на языке Pascal, копирует файл из источника в целевой путь. Вот подробное описание того, что код делает:

  1. Процедура принимает два параметра типа string: Source и Dest, которые представляют собой пути к исходному и целевому файлам соответственно.
  2. Массив FName используется для хранения имён файлов (источника и целевого) в виде массива символов.
  3. Функция StrPCopy используется для копирования имени источника файла в массив FName.
  4. Функция LZOpenFile вызывается дважды:
    • Первый раз она открывает источник файл в режиме чтения (of_Read) и присваивает полученный файловый дескриптор переменной SrcFile.
    • Второй раз она открывает целевой файл в режиме создания (of_Create) и присваивает полученный файловый дескриптор переменной DestFile.
  5. Функция LZCopy вызывается с параметрами источника и целевого файловых дескрипторов. Эта функция выполняет фактическое копирование файла.
  6. Если операция копирования успешна (т.е., возвращаемый код не отрицательный), процедура закрывает оба файла с помощью LZClose и выходит.
  7. Если операция копирования fails (т.е., возвращаемый код отрицательный), процедура отображает сообщение об ошибке с помощью MessageDlg. Сообщение включает имя источника файла, имя целевого файла и код ошибки.

Альтернативное решение: Вместо использования функций LZOpenFile и LZClose можно использовать встроенные процедуры Pascal AssignFile и Reset для открытия и закрытия файлов. Это подход более платформонезависимый и проще для поддержки.

procedure CopyFile(Source, Dest: string);
var
  SrcFile, DestFile: Text;
begin
  AssignFile(SrcFile, Source);
  Rewrite(DestFile, Dest);

  BlockWrite(DestFile, FileRead(SrcFile), FileSize(SrcFile));
  CloseFile(SrcFile);
  CloseFile(DestFile);
end;

Код использует процедуру AssignFile для присвоения имени источника файла текстовой переменной (SrcFile) и имени целевого файла другой текстовой переменной (DestFile). Затем он использует процедуру BlockWrite для копирования содержимого источника файла в целевой файл. Наконец, он закрывает оба файла с помощью CloseFile.

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


Комментарии и вопросы


:: 2010-01-28 14:43:27 :: re:Быстрое копирование файла

пользователь: kan.

Не забудьте добавить
uses LZExpand;


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Файлы ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 21:31:33/0.0071377754211426/2