Добавлены ReadBytes WriteBytes для бестиповых файлов
Добавлена f.Rewrite для двоичных файлов CreateBinary и OpenBinary - изменены - теперь они возвращают бестиповой файл
This commit is contained in:
parent
b81d1f328e
commit
5bb8771953
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "4";
|
||||
public const string Build = "2";
|
||||
public const string Revision = "1936";
|
||||
public const string Revision = "1937";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=4
|
||||
%REVISION%=1936
|
||||
%COREVERSION%=2
|
||||
%REVISION%=1937
|
||||
%MINOR%=4
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@
|
|||
<param name="Keyword" value="WriteElements"></object>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
|
||||
</HEAD><body><H1>Ïîäïðîãðàììû äëÿ ðàáîòû ñ òèïèçèðîâàííûìè ôàéëàìè</H1>
|
||||
<table border=0 cellpadding=5><tr><td><code><b>function</b> CreateBinary<T>(fname: string): <b>file</b> <b>of</b> T;</code>
|
||||
<br> Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé</td></tr>
|
||||
<table border=0 cellpadding=5><tr><td><code><b>function</b> CreateBinary(fname: string): file;</code>
|
||||
<br> Ñîçäà¸ò èëè îáíóëÿåò äâîè÷íûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé</td></tr>
|
||||
<tr><td><code><b>function</b> CreateFile<T>(fname: string): <b>file</b> <b>of</b> T;</code>
|
||||
<br> Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé</td></tr>
|
||||
<tr><td><code><b>function</b> CreateFileInteger(fname: string): <b>file</b> <b>of</b> integer;</code>
|
||||
<br> Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë öåëûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé</td></tr>
|
||||
<tr><td><code><b>function</b> CreateFileReal(fname: string): <b>file</b> <b>of</b> real;</code>
|
||||
<br> Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë âåùåñòâåííûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé</td></tr>
|
||||
<tr><td><code><b>function</b> OpenBinary<T>(fname: string): <b>file</b> <b>of</b> T;</code>
|
||||
<br> Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé</td></tr>
|
||||
<tr><td><code><b>function</b> OpenBinary(fname: string): file;</code>
|
||||
<br> Îòêðûâàåò äâîè÷íûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé</td></tr>
|
||||
<tr><td><code><b>function</b> OpenFile<T>(fname: string): <b>file</b> <b>of</b> T;</code>
|
||||
<br> Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé</td></tr>
|
||||
<tr><td><code><b>function</b> OpenFileInteger(fname: string): <b>file</b> <b>of</b> integer;</code>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.4.2.1936'
|
||||
!define VERSION '3.4.2.1937'
|
||||
|
|
|
|||
|
|
@ -488,8 +488,10 @@ type
|
|||
///- f.Write(a,b,...)
|
||||
/// Выводит значения a,b,... в двоичный файл
|
||||
procedure Write(params vals: array of object);
|
||||
/// Устанавливает файловый указатель на начало файла
|
||||
/// Открывает существующий двоичный файл на чтение и запись. Устанавливает файловый указатель на начало файла
|
||||
procedure Reset;
|
||||
/// Открывает двоичный файл на чтение и запись. Если файл не существовал, он создаётся, если существовал, он обнуляется
|
||||
procedure Rewrite;
|
||||
/// Возвращает имя файла
|
||||
function Name: string;
|
||||
/// Возвращает полное имя файла
|
||||
|
|
@ -529,7 +531,11 @@ type
|
|||
/// Устанавливает текущую позицию файлового указателя в бестиповом файле на элемент с номером n
|
||||
procedure Seek(n: int64);
|
||||
/// Возвращает или устанавливает текущую позицию файлового указателя в бестиповом файле
|
||||
property Position: int64 read GetFilePos write Seek;
|
||||
property Position: int64 read GetFilePos write Seek;
|
||||
/// Записывает данные из байтового массива в бестиповой файл
|
||||
procedure WriteBytes(a: array of byte);
|
||||
/// Считывает указанное количество байтов из бестипового файла в байтовый массив
|
||||
function ReadBytes(count: integer): array of byte;
|
||||
end;
|
||||
|
||||
//{{{doc: Начало секции интерфейса для документации }}}
|
||||
|
|
@ -5593,6 +5599,11 @@ begin
|
|||
PABCSystem.Reset(Self);
|
||||
end;
|
||||
|
||||
procedure AbstractBinaryFile.Rewrite;
|
||||
begin
|
||||
PABCSystem.Rewrite(Self);
|
||||
end;
|
||||
|
||||
function AbstractBinaryFile.Name: string;
|
||||
begin
|
||||
Result := fi.Name
|
||||
|
|
@ -5620,6 +5631,24 @@ function BinaryFile.Size: int64 := PABCSystem.FileSize(Self);
|
|||
|
||||
procedure BinaryFile.Seek(n: int64) := PABCSystem.Seek(Self, n);
|
||||
|
||||
procedure BinaryFile.WriteBytes(a: array of byte);
|
||||
begin
|
||||
if Self.fi = nil then
|
||||
raise new System.IO.IOException(GetTranslation(FILE_NOT_ASSIGNED));
|
||||
if Self.fs = nil then
|
||||
raise new System.IO.IOException(GetTranslation(FILE_NOT_OPENED));
|
||||
Self.bw.Write(a);
|
||||
end;
|
||||
|
||||
function BinaryFile.ReadBytes(count: integer): array of byte;
|
||||
begin
|
||||
if Self.fi = nil then
|
||||
raise new System.IO.IOException(GetTranslation(FILE_NOT_ASSIGNED));
|
||||
if Self.fs = nil then
|
||||
raise new System.IO.IOException(GetTranslation(FILE_NOT_OPENED));
|
||||
Result := Self.br.ReadBytes(count)
|
||||
end;
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Eoln - Eof
|
||||
// -----------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -11,14 +11,14 @@ uses PABCSystem;
|
|||
//>> Подпрограммы для работы с типизированными файлами # Subroutines for typed files
|
||||
// -----------------------------------------------------
|
||||
|
||||
/// Открывает типизированный файл и возвращает значение для инициализации файловой переменной
|
||||
function OpenBinary<T>(fname: string): file of T;
|
||||
/// Открывает бестиповой файл и возвращает значение для инициализации файловой переменной
|
||||
function OpenBinary(fname: string): file;
|
||||
begin
|
||||
PABCSystem.Reset(Result, fname);
|
||||
end;
|
||||
|
||||
/// Создаёт или обнуляет типизированный файл и возвращает значение для инициализации файловой переменной
|
||||
function CreateBinary<T>(fname: string): file of T;
|
||||
/// Создаёт или обнуляет бестиповой файл и возвращает значение для инициализации файловой переменной
|
||||
function CreateBinary(fname: string): file;
|
||||
begin
|
||||
PABCSystem.Rewrite(Result, fname);
|
||||
end;
|
||||
|
|
@ -64,7 +64,7 @@ end;
|
|||
/// Открывает типизированный файл, записывает в него последовательность элементов ss и закрывает его
|
||||
procedure WriteElements<T>(fname: string; ss: sequence of T);
|
||||
begin
|
||||
var f := CreateBinary&<T>(fname);
|
||||
var f := CreateFile&<T>(fname);
|
||||
foreach var x in ss do
|
||||
f.Write(x);
|
||||
f.Close
|
||||
|
|
@ -119,7 +119,7 @@ end;
|
|||
/// Открывает типизированный файл, возвращает последовательность его элементов и закрывает его
|
||||
function ReadElements<T>(fname: string): sequence of T;
|
||||
begin
|
||||
var f := OpenBinary&<T>(fname);
|
||||
var f := OpenFile&<T>(fname);
|
||||
while not f.Eof do
|
||||
begin
|
||||
var x := f.Read;
|
||||
|
|
|
|||
|
|
@ -488,8 +488,10 @@ type
|
|||
///- f.Write(a,b,...)
|
||||
/// Выводит значения a,b,... в двоичный файл
|
||||
procedure Write(params vals: array of object);
|
||||
/// Устанавливает файловый указатель на начало файла
|
||||
/// Открывает существующий двоичный файл на чтение и запись. Устанавливает файловый указатель на начало файла
|
||||
procedure Reset;
|
||||
/// Открывает двоичный файл на чтение и запись. Если файл не существовал, он создаётся, если существовал, он обнуляется
|
||||
procedure Rewrite;
|
||||
/// Возвращает имя файла
|
||||
function Name: string;
|
||||
/// Возвращает полное имя файла
|
||||
|
|
@ -529,7 +531,11 @@ type
|
|||
/// Устанавливает текущую позицию файлового указателя в бестиповом файле на элемент с номером n
|
||||
procedure Seek(n: int64);
|
||||
/// Возвращает или устанавливает текущую позицию файлового указателя в бестиповом файле
|
||||
property Position: int64 read GetFilePos write Seek;
|
||||
property Position: int64 read GetFilePos write Seek;
|
||||
/// Записывает данные из байтового массива в бестиповой файл
|
||||
procedure WriteBytes(a: array of byte);
|
||||
/// Считывает указанное количество байтов из бестипового файла в байтовый массив
|
||||
function ReadBytes(count: integer): array of byte;
|
||||
end;
|
||||
|
||||
//{{{doc: Начало секции интерфейса для документации }}}
|
||||
|
|
@ -5593,6 +5599,11 @@ begin
|
|||
PABCSystem.Reset(Self);
|
||||
end;
|
||||
|
||||
procedure AbstractBinaryFile.Rewrite;
|
||||
begin
|
||||
PABCSystem.Rewrite(Self);
|
||||
end;
|
||||
|
||||
function AbstractBinaryFile.Name: string;
|
||||
begin
|
||||
Result := fi.Name
|
||||
|
|
@ -5620,6 +5631,24 @@ function BinaryFile.Size: int64 := PABCSystem.FileSize(Self);
|
|||
|
||||
procedure BinaryFile.Seek(n: int64) := PABCSystem.Seek(Self, n);
|
||||
|
||||
procedure BinaryFile.WriteBytes(a: array of byte);
|
||||
begin
|
||||
if Self.fi = nil then
|
||||
raise new System.IO.IOException(GetTranslation(FILE_NOT_ASSIGNED));
|
||||
if Self.fs = nil then
|
||||
raise new System.IO.IOException(GetTranslation(FILE_NOT_OPENED));
|
||||
Self.bw.Write(a);
|
||||
end;
|
||||
|
||||
function BinaryFile.ReadBytes(count: integer): array of byte;
|
||||
begin
|
||||
if Self.fi = nil then
|
||||
raise new System.IO.IOException(GetTranslation(FILE_NOT_ASSIGNED));
|
||||
if Self.fs = nil then
|
||||
raise new System.IO.IOException(GetTranslation(FILE_NOT_OPENED));
|
||||
Result := Self.br.ReadBytes(count)
|
||||
end;
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Eoln - Eof
|
||||
// -----------------------------------------------------
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in a new issue