PNewElement=^TNewElement;
TNewElement=
record
NumberFigures:
integer
;
Begin_Figures:
integer
;
End_Figures:
integer
;
Nach_Point:TPointM;
End_Point:TPointM;
Angle_Rotate :
double
;
MRect:TMainRect;
STR_Coment:
string
[
80
];
case
Element :TMElement
of
elLine :(Pln,Plk:TPointM);
elCircle :(Pn,Pk,Pc:TPointM;Direct:TPrisnak);
elBKL :(BKL:
integer
);
elBIKL :(BIKL:
integer
);
elKORLeft :(KORLeft:
integer
);
elKORRight :(KORRight:
integer
);
elKORKK :(KORKK :
integer
);
elHP :(HP:
boolean
);
elKP :(KP:
integer
);
elBX :(BX:
integer
);
elBBX :(BBX:
integer
);
elHPP :(HPP:
integer
);
elKPP :(KPP:
integer
);
elBPP :(BPP,BPPN:
integer
;BPPAngle:
real
);
elSpeed :(Speed :
boolean
);
elNul :(NUL:
boolean
);
elABC :(ABC:
boolean
);
elPrisnak :(Prisn:TPrisnak);
elName :(Name:
string
[
80
]);
elComent :(Comment:
boolean
);
end
;
TFileRecords =
array
of
TNewElement;
...
В самом приложении в FormSapr:
...
private
..
Files: TFileRecords;
FigureList_Elem_:TList;
FiguresElem:PNewElement;
function
CreateArchiveHeader(FiguresElem:PNewElement): TFileRecords;
procedure
SAVE_FIGURE;
procedure
Load_Figure;
...
function
TFormSapr
.
CreateArchiveHeader(FiguresElem:PNewElement): TFileRecords;
var
i:
Integer
;
begin
for
i:=
0
to
FigureList_Elem_
.
Count-
1
do
begin
FiguresElem:=FigureList_Elem_
.
Items[i];
SetLength(Result, i +
1
);
Result[i]:=FiguresElem^;
end
;
end
;
procedure
TFormSapr
.
SAVE_FIGURE;
var
i, j:
Integer
;
S:
String
;
begin
if
MainMessageDlg(
'Да - Запись раскроя? Нет - Выйти'
,mtConfirmation,[mbYes,mbNo])=mrYes
then
if
FigureList_Elem_
.
Count<>
0
then
BEGIN
Files := CreateArchiveHeader(FiguresElem);
with
TFileStream
.
Create(ExtractFilePath(ParamStr(
0
))+
'RaskFigMem\test.figure'
, fmCreate)
do
try
j := Length(Files);
WriteBuffer(j, SizeOf(
Integer
));
for
i :=
0
to
j-
1
do
begin
WriteBuffer(Files[i], SizeOf(Files[i]));
end
;
finally
Free;
end
;
END
;
end
;
procedure
TFormSapr
.
Load_Figure;
var
i, FilesCount:
Integer
;
begin
with
TFileStream
.
Create(ExtractFilePath(ParamStr(
0
))+
'RaskFigMem\test.figure'
, fmOpenRead)
do
try
ReadBuffer(FilesCount, SizeOf(
Integer
));
SetLength(Files, FilesCount);
for
i :=
0
to
FilesCount-
1
do
begin
ReadBuffer(Files[i], SizeOf(Files[i]));
new(FiguresElem);
FiguresElem^:=Files[i];
if
(i=FilesCount-
1
)
then
Index_Figure:=FiguresElem
.
NumberFigures;
FigureList_Elem_
.
Add(FiguresElem);
end
;
Inc(Index_Figure);
finally
Free;
end
;
end
;