Работа с файлами
Примеры использования функции  в  Delphi для работы с  файлами.

Закрытие файлов

Создание файлов

Поискфайлов

Имя файлов

Размер файлов

Копирование

Определение даты и времени создания файла

Удаление файла

Открытие  файла

Для  открытия файла моно использовать функцию FileOpen  или как в Паскале функцией AssignFile Также возможно открытие файла с помощью  потоков .

Пример

var F:TFileStream;

begin

F:=TFileStream.Create(Name,fmOpenRead);   // файл открыт для чтения

// Для открытия файла для записи или создания нового следует использовать функцию

// с параметром fmOpenWrite

//далее делается все что необходимо

F.Free;

End;

 Закрытие  файла

Выбор функции для закрытия  зависит от функции с паомощью которой был открыт файл

Открытие	Закрытие
FileOpen	FileClose
AssignFile	CloseFile
F:=TfileStream.Create	F.Free
Создание файла

Если используются стандартные функции Pascal

     AssignFile(f,S) ;

      Rewrite(f);

С помощью потоков

            F:=TfileStream.Create(S,fmOpenWrite OR fm Create);

  где   S-Имя файла

Поиск файлов

В следующем примере  идет подсчет количества  файлов

var  Count:  integer;

        Result: Integer;

        SearchRec:TSearchRec;

begin  Count:=0;

     Result:=FindFirst(Path+*.*,faArchive,SearchRec);

while result=0 do

  begin Result:=FindNext(SearchRec);

  Count:=Count+1;

  end;

end;

Имя файла

Так как имя файла может быть  двух типов -полное или непосредственное.Часто требуется  выделить или  полное или  непосредственное имя файла.Для  преобразования имени файла в полное  имя включающее маршрут  моно воспользоваться фунуцией ExpandFileName :

var  FullName:String;FileName:string;

--//-//

FullName:= ExpandFileName(FileName) :

где FullName -полное имя файла,FileName- непосредственное имя файла.В этом случае полное имя складывается как непосредственное +текущий путь из которого запущено приложение.Также если Вы распологаете полным именем файла то можно воспользоватся функциями для “форматирования” полного имени файла.Пусть есть полное имя файла C:\programFiles\Borland\Delphi\Bin\hello.exe то

возможно использование следующих функций :

Функция	Возвращаемое значение
ExtractFileDir	C:\programFiles\Borland\Delphi\Bin
ExtractFileDrive	C:
ExtractFileName	Hello.exe
ExtractFilePath	C:\programFiles\Borland\Delphi\Bin\
ExtractFileExt	*.exe

Для переименования расширения файла можно использовать функцию ChangeFileExt .А для переименования файла целиком функцию RenameFile

Размер файла

Возможно  определение с помощью функции FileSize ,c помощью функции FindFirst или используя потоки.Примеры использования

1. 	Функция FileSize

   var  F:File Of  Byte

begin

AssignFile(F,Name);

Reset(F);

Edit1.text:=IntToStr(FileSize(F));

CloseFile(F)

end;

2. Функция  FindFirst

 var SeachRec:TSeachRec;

begin if FindFirst(Name,faAnyFile,SearchRec)=0 then

  Edit2.text:=IntToSTr(SeachRec.size);

FindClose(SeachRec);

end;

3. Использование потоков.

 Var F:FileStream;

begin F:;=TFileStream.Create(Name,fmOpenRead) ;

Edit2.text:=IntToStr(F,size);

F.Free;

end;

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

Первый способ : с помощью  функций BlockRead ,BlockWrite.В следующем примере используется  массив из 4096 байт для копирования содержимого одного файла в другой из файла указанного парамром Path1 в Path2

 var Path1,Path2:string;

S,D :File;

NumRead,NumWritte:word;

Buffer :array [1..4096] of Byte;

begin

AssignFile(S,Path1);

Reset(S,1);

AssignFile(S,Path1);

Reset(D,1);

repeat

   BlockRead(S,Buffer,SizeOf(Buffer),NumRead);

  BlockWrite(D,Buffer,NumRead, NumWritte);

until (NumRead=0)OR(NumWritte<>NumRead);

CloseFile(S);

CloseFile(D);

end;

Второй способ :с помощью потоков

Procedure FileCopy(Const Path1,Path2);

var S,D:TFileStream;

begin

S:=TFileStream.Create(Path1,fmOpenRead);

D:=TFileStream.Create(Path2,fmOpenWrite OR fmCreate);

D.CopyFrom(S,S.Size);

D.Free;

S.Free;

end;;

Определение даты и времени создания файлов

Для определения следует воcпользоваться функцией FileGetDate

Пример:

functionGetFileData(TheFileName:string):string;

var  FHandle:integer;

    begin

    FHandle:=FileOpen(TheFileName,0);

              try

               Result:=DataTimeToStr(FileDataToTime(FileGetDate(FHandle)));

              finally

                   FileClose(FHandle);

             end;

   end

Удаление файлов

Для удаления используется функция DeleteFile(s:Path);Если удаляемый файл не существует то функция возвращает false ,при этом критических ситуаций не возникает.


Функции для работы с файлами
Функции  в  Delphi  для работы с  файлами.

Стандартные функции

AssignFile                ChDir                  CloseFile          DiskFree

DiskSpace               EOF                    FileExist           FindClose

FindFirst                   FindNext            GetDir              MkDir

Rename                   Reset                  Rewrite            RmDir

Eoln                          Readln               Write                  WriteLn

Read

AssignFile(var  F ;FileName:String);

 Связывает файловую переменную с именем файла       FileName

ChDir(Path: string);

 Изменяет текущий каталог ;Path- строковое выраение содержащее путь к устанавливаему каталогу

CloseFile(Var F)

  Закрывает файл (Связь файловой переменной при этом не  исчезает т,е возможна дальнейшая  работа с F без  дополнительного использования пр-ры AssignFile)

DiskFree(D:byte):LongInt

 Возвращает в байтах кол-во свободног места на указанном диске  D-Номер диска : 1-Диск А , 2-Дяск В и тд Функция возвращает-1 если указаное устройство не существует

DiskSpace(D: byte):LongInt

 Возвращает объем в байтах полного пространства на указанном диске Параметр D -Аналогичен предыдущему

EOF(Var F)

 Тестирует конейц файла если да то  возращает true если нет то         false

Erase(Var F)

 Удаляет файл Перед выполнением необходщимо закрыть файл

FileExist(Const  FileName:string,):Boolean

 Проверяет существование файла ,true если  файл существует

FindClose(var TSearhRec)

 Освобождает память выделенную для поиска файлов функциями FindFirst и FindNext

FindFirst (const Path :string Atr:Integer ,var F:TSearhRec):Integer

 Возвращает первый файл найденный в  указанном каталоге Path-путь поиска Atr-атрибуты выбираемых файлов F -переменная типа TSearhRec в которой будет возвращено название

найденного файла

FindNext (var F:TSearhRec) Integer

 Возвращает следующий найденный файл ,используется после определения  параметров поиска функцией FindFirst.

GetDir(D:byte;Var  S :string)

 Возвращает имя текущего каталога в переменную S  D-имя логического устройства (аналогично DiskFree)

MkDir(Dir:String:)

 Создает новый каталог  указанный строкой Dir (каталог не должен существовать)

Rename(var F,NewName:String:)

 Перименовывает  файл F  ,в файл с именем NewName

Reset(var F)

 Открывает существующий файл для чтения .

Reset(var F;RecSize:Word)

 Открывает существующий  нетипизированный файл для чтения.RecSize -Размер блока данных

Rewrite(var F;{*RecSize:Word})

 Открывает новый файл или отчищает существующий,RecSize-используется аналогично предыдущей  функции

RmDir(Dir:String:)-

 Удаляет кталог ,каталог должен быть пустым.

Дополнительные функции для работы  с текстовыми  файлами

Eoln(Var :F:TextFile):Boolean

 Тестирует маркер конца строки и при достижении его возвращает True -

Read(Var :F:TextFile,V1,V2,{V3,...Vn}):

 Читает из текстового файла последовательность  символьных  представлений  переменных V1...Vn типа Char,String а также любого целого или вещественного типа игнорируя признаки конца строк

ReadLn (Var :F:TextFile,V1,V2,{V3,...Vn}):

 Аналогично предыдущей но с учетом конца строки

Write(Var :F:TextFile,V1,V2,{V3,...Vn}):

 Записывает в текстовой файл последовательность  символьных  представлений  переменных

WriteLn(Var :F:TextFile,V1,V2,{V3,...Vn}):

 Записывает в текстовой файл последовательность  символьных  представлений  переменных и в конце ставит признак конца строки


Работа с файлами,компоненты
Компоненты для работы  с  файлами.

Компонент FileListBox

Компонент DirectoryListBox

Компонент DriveComboBox

Компонент FilterComboBox

Компонент FileListBox

Этот компонент представляет собой список файлов в  каталоге заданном  свойством  Directory.По умолчанию отображает список всех файлов в текущем каталоге.

Свойство FileType позволяет задать типы отображаемых файлов .Возможные значения :

ftReadOnly              Файлы с атрибутом “Только чтение”

ftHidden                 Файлы с атрибутом “Скрытый”

ftSystem               Файлы с атрибутом “Системный”

ftVolumeID              Файлы  представляющие метку тома

ftDirectory              Файлы  представляющие собой имена подкаталогов

ftArchive               Файлы с атрибутом “Архивный”

ftNormal               Файлы без атрибутов (Обычные файлы)

А так же возможны комбинации этих параметров :  FileListBox1.FileType:=[ftSystem,ftReadOnly];

Свойство  IntegralHeight позволяет задать вертикальный размер списка. Если его значение =true ,то

вертикальный размер кратен числу отображаемых элементов.

Свойство  ItemHeight позволяет задать вертикальный размер элемента списка.

Свойство  Mask позволяет задать шаблон  имен файлов отображаемых в списке.По умолчанию любые файлы т,е (*.*)

Свойство  MultiSelect позволяет разрешить или отменить одновременный выбор нескольких файлов.

Свойство  ShowGlyphs позволяет разрешить или отменить показ  иконки соответствующей данному файлу.

Свойство  FileName позволяет узнать имя выбранного файла.Имя возвращается как полный путь.

          Procedure Tform1.FileListBox1DblClick(Sender:TObject);

               begin

                    FileName:= FileListBox1. FileName;

               end;

Компонент DirectoryListBox

Этот компонент представляет собой список  каталогов на  заданном диске ,описанном свойством  Drive.Возвращает имя выбранного кататалога в свойстве Directory. Cвойства IntegralHeight

, ItemHeight  аналогичны  по смыслу свойствам  компонента FileListBox . Cвойство DirLabel позволяет связать  данный компонент с компонентом Label   для отображения текущего  каталога.

Пример использования :при каждом двойном нажатии мыши в списке каталогов в компоненте

DirectoryListBox  отображается список файлов в этом каталоге с помощью компоненты  FileListBox:

Procedure Tform1.DirectoryListBox1DblClick(Sender:TObject);

              begin

                   FileListBox.Directory:= DirectoryListBox1. Directory;

               end;

Компонент DriveComboBox

Используется для  отображения  списка логических устройств.Название возвращается как значение свойства Drive. Свойство TextCase позволяет установить регистр символов : tsLowerCase-используются символы нижнего регистра и tsUpperCase для отображения используются символы  верхнего  регистра.

Пример : отображение списка каталогов с возмоностью переключения на другие логические устройства

          Procedure TForm1.DriveComboBox1Click(Sender:TObject);

              begin

                  DirectoryListBox1.Drive:= DriveComboBox1. Drive;

                  FileListBox1.Directory:=DirectoryListBox1.Directory;

               end;

Компонент FilterComboBox

Используется для  задания   шаблона  имен файлов ,отображаемых в списке файлов например в компоненте FileListBox. Шаблон задается свойством Filter которое может содержать  несколько шаблонов ,разделенных символом   “|”.

Пример

Procedure Tform1FormCreate(Sender:TObject);

   Begin

        FilterComboBox1.Filter:=’All files’(*.*) | *.* | Pascal files (*.pas) |*.pas’ ;

  end;

Выбранный шаблон может быть передан  компоненте FileListBox , через свойство mask

Procedure  Tform1.ComboBox1Change(Sender:TObject);

begin

FileListBox1.Mask:=FilterComboBox1.Mask

end;


Работа с файлами,подпрограммы модуля FileCtrl
 Подпрограммы модуля FileCtrl  для работы  с  файлами.

ForceDirectories

SelectDirectory

DirectoryExists

Function DirectoryExists(Dir: string);

Функция  DirectoryExists служит для определения существования  каталога и возвращает true если каталог существует.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

  if DirectoryExists(Edit1.Text) then

    Label1.Caption := Edit1.Text + ' Каталог существует'

  else

    Label1.Caption := Edit1.Text + ' Каталог не существует';

end;

Procedure ForceDirectories(Dir: string);

Процедура ForceDirectories служит для создания необходимых подкаталогов .Каталог не должен  существовать.

Пример :

procedure TForm1.Button1Click(Sender: TObject);

var

  Dir: string;

begin

  Dir := 'C:\APPS\SALES\LOCAL';

  ForceDirectories(Dir);

  if DirectoryExists(Dir) then

    Label1.Caption := ‘Каталог’+Dir + ' создан'

end;

SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean;

Функция SelectDirectory служит для отображения диалоговой панели SelectDirectory .Имя  каталога   переданое  в качестве параметрa Directory   будет задавать начальный каталог который будет отображаться .Параметр Options  позволяет определить внешний вид и реакцию  панели и  может быть следующим:

 [ ]      -пользователь может выбирать только существующие каталоги

sdAllowCreate -в диалоговой панели появляется строка для  ввода имени нового каталога

При этом сам каталог не создается

sdPerformCreate- Используется только совместно с sdAllowCreate . При вводе имени нового каталога, он создается

sdPrompt - Используется только совместно с sdAllowCreate . При вводе имени нового каталога, выдает запрос на потверждение  создания каталога и если указана опция sdPerformCreate создает его

Пример:

uses FileCtrl;

procedure TForm1.Button1Click(Sender: TObject);

var

  Dir: string;

begin

  Dir := 'C:\LINDA';

  if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt]) then

    Label1.Caption := Dir;

end;


События
События обрабатываемые формой.

OnActivate

OnClose

OnCloseQuery

OnCreate

OnDestroy

OnHide

OnPaint

OnResize

OnShow

OnKeyPress

OnKeyDown

OnKeyUp

OnDbiClick

OnMouseDown

OnMouseMove

OnMouseUp

OnDragDrop

OnHelp

OnHintOnOnldle

OnMessage

OnActivate

OnDeActivate

OnMinimize

OnRestore


 Cобытие OnActivate

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

Все события


Cобытие OnClose

Cобытие наступает при закрытии формы.Форма получает это событие перед  закрытие  формы,которое может наступить либо при вызове метода Close ,либо при выборе команды Close из системного меню.Это событие имеет тип  TCloseEvent=procedure (Sender:Tobject,var Action:TCloseAction);

Параметр  Action определяет тип закрытия формы:

CaNone             Форму нельзя закрыть-

CaHide              Форма на самом деле не закрывается ,а становится  невидимой

CaFree               Форма закрывается

CaMinimize       Форма минимизируется(окно формы сворачивается)

Все события


Cобытие OnCloseQuery

С помощью этого события можно разрешить или отменить  закрытие  формы

Тип этого события описывается как

TCloseQueryEvent=procedure (Sender:Tobject,var CanClose:Boolean) of object;

Если CanClose=true разрешается закрытие ,если =false то закрытие формы отменяется.

Все события


Cобытие OnCreate

Событие возникает при начальном создании формы.Обычно в обработчике этого события  устанавливаются размеры формы ,цвет и т.п.При создании формы события происходят в следующем порядке:

OnCreate

OnShow

OnActivate

OnPaint

Все события


Cобытие OnDestroy

Событие OnDestroy возникает на финальной  стадии закрытия формы и моет быть вызвано с помощью методов Destroy или Free  либо закрытием главной формы приложения.

Все события


Cобытие OnHide

Событие OnHide возникает при скрытии  формы ,то есть когда ее свойство  Visible=false

Все события


Cобытие OnPaint

Событие OnPaint возникает  при необходимости перерисовки содержимого формы .Например

оно  может возникнуть при получении формой фокуса

Все события


Cобытие OnResize

Событие OnResize возникает  при изменении  размеров формы.

Все события


Cобытие OnShow

Событие OnShow  возникает  , когда  форма отображается (т.е . Visible=true)

Все события


Cобытие OnKeyPress

Событие OnKeyPress  возникает  , при нажатии клавиши на клавиатуре

TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of object;

Параметр  Key  содержит  ASCII код нажатой клавиши.Для клавиш которые не имеют ASCII кода  это событие не наступает.Для обработки таких клавиш  используются  события

OnKeyUp и  OnKeyDown

Для получения ASCII кода нажатой клавиши  используется  преобразование Chr(Key)

Пример : if Chr(Key)=’A’ then ...

Примечание :для того чтобы форма первой получала это событие необходимо установить свойство  формы  KeyPreview=true

Все события


Cобытие OnKeyDown

Событие OnKeyDownвозникает как и событие OnKeyPress , при нажатии клавиши на клавиатуре.Но обработчик этого события получает еще  информацию о состоянии  клавиш   Shift,  Alt,  Ctrl ,f а также  о  нажатой кнопке мыши.Информация о клавишах передается  в  параметре   key  типа  Word .Для  определения какая именно клавиша нажата  необходимо использовать  коды  виртуальных  клавиш.

Пример   определим нажата ли комбинация клавиш  Alt+F10

Procedure Tform1.FormKeyDown(Sener  ....)

          begin

             if ((Shift=[ssAlt] and (key=VK_F10)) t hen

                 ShowMessage(‘Нажата комбинация клавиш  Alt+F10’);

end;

Возможные значения параметра  Shift :

ssShift	Нажата клавиша Shift

ssAlt	Нажата клавиша  Alt

ssCtrl	Нажата клавиша Ctrl

ssLeft	Нажата левая клавиша мышки

ssRight	Нажата правая клавиша мышки

ssMiddle	Нажата средняя клавиша мышки

ssDouble	Нажата левая и правая клавишы мышки

Пример :определить нажатие кнопки Insert

if Key=vk_Insert then showMessage(‘Нажата клавиша Insert’);

После того как пользователь отпустил клавишу  наступает событие OnKeyUp

Примечание :для того чтобы форма первой получала это событие необходимо установить свойство  формы  KeyPreview=true

Все события


Cобытие OnKeyUp

Событие OnKeyUp возникает когда пользователь  отпустил нажатую клавишу на клавиатуре ,или  м ышки. Т .е .оно  возникает строго после события OnKeyDown также как и  в

OnKeyDownесть возможность получить информацию о состоянии  клавиш   Shift,  Alt,, Ctrl

Примечание :для того чтобы форма первой получала это событие необходимо установить свойство  формы  KeyPreview=true

Все события


Cобытие OnClick

Событие OnClick возникает  при нажатии кнопки мыши в  области компонента  или формы .Это

событие также происходит при

---выборе  элемента таблицы,списка и т.п

---нажатии клавиши  Enter , когда  активным  элементом  формы  была  кнопка  со значением   по умолчанию (заданная  свойством Default)

---нажал клавишу Esc когда в активной  форме имелась кнопка Cancel (заданная свойством  Cancel)

♦	нажал клавишу для вызова кнопки

Все события


Cобытие OnDblClick

Событие OnDblClick возникает  при  двойном нажатии кнопки мыши в  области компонента  или формы .

Все события


Cобытие OnMouseDown

Событие OnMouseDownпроисходит при нажатии кнопки мыши , когда курсор находится в области  компонента .Параметр Button  позволяет  определить какая клавиша нажата, параметр Shift нажаты ли были клавиши  Shift,  Alt,  Ctrl ,

Пример  отслеживаем  координаты  нажатия мышки

procedure Tform1.FormMouseDown(............)

begin

   Label1.caption:=Format (‘X=%d,Y=%d,[X,Y])

end;j

Все события


Cобытие OnMouseMove

Событие OnMouseMoveпроисходит при  перемещении  мыши .

Параметр X определяет  горизонтальные координаты мыши

Параметр Y определяет  вертикальную координату мыши

Все события


Cобытие OnMouseUp

Событие OnMouseUpпроисходит когда пользователь отпустил кнопку мыши.

Параметры аналогичны OnMouseDownПример Нарисуем прямоугольник  координаты левого верхнего угла которого будут соответствовать точке нажатия  мышки  , а координатам левого верхнего угла точка в которой пользователь отпустил кнопку.

Var  StartX,StartY:Integer;

procedure Tform1.FormMouseDown(........)

   begin

       StartX:=X;

       StartY:=Y;

    end;

procedure Tform1.FormMouseUp(......)

begin

Form1.Canvas.Rectangle(StartX,StartY,X,Y);

end;

 Все события


Основные  свойства  формы.

Active

ActiveControl

ActiveMDIChild

BorderIcon

BorserStyle

Canvas

ClientHeight

ClientRect

ClientWidth

HelpFile

Icon

KeyPreview

MDIChildCount

MDIChildRen

Menu

ModalResult

PixelPerInch

Position

PrintScale

Scaled

TileMode

WindowMenu

WindowState


Cвойство Active


Cвойство ActiveControl


Cвойство ActiveMDOChild


Cвойство ActiveControl


Работа с файлами
Примеры использования функции  в  Delphi для работы с  файлами.

Открытие  файла

Список стандартных  функций       В начало

Для  открытия файла моно использовать функцию FileOpen  или как в Паскале функцией AssignFile Также возможно открытие файла с помощью  потоков .Пример

var F:TFileStream;

begin

F:=TFileStream.Create(Name,fmOpenRead);   // файл открыт для чтения

// Для открытия файла для записи или создания нового следует использовать функцию

// с параметром fmOpenWrite

//далее делается все что необходимо

F.Free;

End;

    Закрытие  файла

Выбор функции для закрытия  зависит от функции с паомощью которой был открыт файл

Открытие	Закрытие
FileOpen	FileClose
AssignFile	CloseFile
F:=TfileStream.Create	F.Free
Создание файла

Если используются стандартные функции Pascal

     AssignFile(f,S) ;

      Rewrite(f);

С помощью потоков

            F:=TfileStream.Create(S,fmOpenWrite OR fm Create);

  где   S-Имя файла

Имя файла

Так как имя файла может быть  двух типов -полное или непосредственное.

Часто требуется  выделить или  полное или  непосредственное имя файла

Для  преобразования имени файла в полное  имя включающее маршрут  моно воспользоваться фунуцией ExpandFileName :

var  FullName:String;FileName:string;

--//-//

FullName:= ExpandFileName(FileName) :

где FullName -полное имя файла,FileName- непосредственное имя файла

В этом случае полное имя складывается как непосредственное +текущий путь из которого запущено приложение.Также если Вы распологаете полным именем файла то можно воспользоватся функциями для “форматирования” полного имени файла.Пусть есть полное имя файла C:\programFiles\Borland\Delphi\Bin\hello.exe то

Функция	Возвращаемое значение
ExtractFileDir	C:\programFiles\Borland\Delphi\Bin
ExtractFileDrive	C:
ExtractFileName	Hello.exe
ExtractFilePath	C:\programFiles\Borland\Delphi\Bin\
ExtractFileExt	*.exe

Для переименования расширения файла можно использовать функцию ChangeFileExt .А для переименования файла целиком функцию RenameFile

Размер файла

Возможно  определение с помощью функции FileSize ,c помощью функции FindFirst или используя потоки.Примеры использования

1. 	Функция FileSize

   var  F:File Of  Byte

begin

AssignFile(F,Name);

Reset(F);

Edit1.text:=IntToStr(FileSize(F));

CloseFile(F)

end;

2. Функция  FindFirst

 var SeachRec:TSeachRec;

begin if FindFirst(Name,faAnyFile,SearchRec)=0 then

  Edit2.text:=IntToSTr(SeachRec.size);

FindClose(SeachRec);

end;

3. Использование потоков.

 Var F:FileStream;

begin F:;=TFileStream.Create(Name,fmOpenRead) ;

Edit2.text:=IntToStr(F,size);

F.Free;

end;

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

Первый способ : с помощью  функций BlockRead ,BlockWrite.В следующем примере используется  массив из 4096 байт для копирования содержимого одного файла в другой

из файла указанного парамром Path1 в Path2

 var Path1,Path2:string;

S,D :File;

NumRead,NumWritte:word;

Buffer :array [1..4096] of Byte;

begin

AssignFile(S,Path1);

Reset(S,1);

AssignFile(S,Path1);

Reset(D,1);

repeat

   BlockRead(S,Buffer,SizeOf(Buffer),NumRead);

  BlockWrite(D,Buffer,NumRead, NumWritte);

until (NumRead=0)OR(NumWritte<>NumRead);

CloseFile(S);

CloseFile(D);

end;

Второй способ :с помощью потоков

Procedure FileCopy(Const Path1,Path2);

var S,D:TFileStream;

begin

S:=TFileStream.Create(Path1,fmOpenRead);

D:=TFileStream.Create(Path2,fmOpenWrite OR fmCreate);

D.CopyFrom(S,S.Size);

D.Free;

S.Free;

End;

Список стандартных  функций       В начало


Автор данного hlp файла  Малышев Олег В.

Home page  http://www.chat.ru/`olmal

Замечания и пожелания присылать по e-mail :olmal@mail.ru

  Предлагаю конвертирование ваших файлов в формат hlp-файлов !!

                     Авторство гарантирую !!

                  20.04.99