type
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
;
PChetchik=^TChetchik_;
TChetchik_=
record
NumberFigures:
integer
;
end
;
...
var
FiguresElem:PNewElement;
FigureList_Elem_:TList;
Chetchik:PChetchik;
FLE_Chetchik:TList;
...
procedure
TFormSapr
.
SaveFigure_NEW;
var
i,j:
integer
;
f:
file
;
filename:
string
;
FigureIndex_:
integer
;
begin
if
FigureList_Elem_
.
Count<>
0
then
begin
FigureIndex:=FigureList_Elem_
.
Count-
1
;
filename:=ExtractFilePath(ParamStr(
0
))+
'RaskFigMem\FigureList_Elem.figN'
;
system
.
assign(f,filename);
system
.
rewrite(f,
1
);
system
.
blockWrite(f,FigureIndex,sizeof(FigureIndex));
for
i:=
0
to
FigureList_Elem_
.
Count-
1
do
begin
FiguresElem:=FigureList_Elem_
.
Items[i];
system
.
blockWrite(f,FiguresElem^,SizeOf(FiguresElem^));
end
;
system
.
blockWrite(f,FiguresElem^.Nach_Point
.
X,SizeOf(FiguresElem^.Nach_Point
.
X));
system
.
blockWrite(f,FiguresElem^.Nach_Point
.
Y,SizeOf(FiguresElem^.Nach_Point
.
Y));
system
.
blockWrite(f,FiguresElem^.End_Point
.
X,SizeOf(FiguresElem^.End_Point
.
X));
system
.
blockWrite(f,FiguresElem^.End_Point
.
Y,SizeOf(FiguresElem^.End_Point
.
Y));
system
.
blockWrite(f,FiguresElem^.MRect
.
MinX,SizeOf(FiguresElem^.MRect
.
MinX));
system
.
blockWrite(f,FiguresElem^.MRect
.
MaxX,SizeOf(FiguresElem^.MRect
.
MaxX));
system
.
blockWrite(f,FiguresElem^.MRect
.
MinY,SizeOf(FiguresElem^.MRect
.
MinY));
system
.
blockWrite(f,FiguresElem^.MRect
.
MaxY,SizeOf(FiguresElem^.MRect
.
MaxY));
system
.
close(f);
end
;
if
FLE_Chetchik
.
Count<>
0
then
begin
FigureIndex_:=FLE_Chetchik
.
Count-
1
;
filename:=ExtractFilePath(ParamStr(
0
))+
'RaskFigMem\FLE_Chetchik.figN'
;
system
.
assign(f,filename);
system
.
rewrite(f,
1
);
system
.
blockWrite(f,FigureIndex_,sizeof(FigureIndex_));
for
i:=
0
to
FLE_Chetchik
.
Count-
1
do
begin
Chetchik:=FLE_Chetchik
.
Items[i];
system
.
blockWrite(f,Chetchik^,SizeOf(Chetchik^));
end
;
system
.
close(f);
end
;
end
;
procedure
TFormSapr
.
LoadRaskroj_NEW;
var
i,j,nomread:
integer
;
f:
file
;
S,S1:
string
;
k:
integer
;
fileName:
string
;
FigureIndex_:
integer
;
begin
if
FigureList_Elem_
.
Count=
0
then
begin
filename:=ChangeFileExt(ExtractFilePath(ParamStr(
0
))+
'RaskFigMem\FigureList_Elem.figN'
,
'.figN'
);
if
not
FileExists(filename)
then
Exit;
LMDLabel7
.
Caption:=
'ÑÈÑÒÅÌÀ SAPR ×ÏÓ. ÐÀÑÊÐÎÉ : '
+ExtractShortPathName(filename);
system
.
assign(f,Filename);
system
.
Reset(f,
1
);
system
.
blockRead(f,FigureIndex,sizeof(FigureIndex),nomread);
for
i:=
0
to
FigureIndex
do
begin
new(FiguresElem);
system
.
blockRead(f,FiguresElem^,SizeOf(FiguresElem^),nomread);
if
(i=FigureIndex)
then
Index_Figure:=FiguresElem
.
NumberFigures;
FigureList_Elem_
.
Add(FiguresElem);
end
;
Nach_Point_X := FiguresElem^.Nach_Point
.
X;
Nach_Point_Y := FiguresElem^.Nach_Point
.
Y;
End_Point_X := FiguresElem^.End_Point
.
X;
End_Point_Y := FiguresElem^.End_Point
.
Y;
MRect_MinX := FiguresElem^.MRect
.
MinX;
MRect_MaxX := FiguresElem^.MRect
.
MaxX;
MRect_MinY := FiguresElem^.MRect
.
MinY;
MRect_MaxY := FiguresElem^.MRect
.
MaxY;
Inc(Index_Figure);
system
.
close(f);
end
;
if
FLE_Chetchik
.
Count=
0
then
begin
filename:=ChangeFileExt(ExtractFilePath(ParamStr(
0
))+
'RaskFigMem\FLE_Chetchik.figN'
,
'.figN'
);
if
not
FileExists(filename)
then
Exit;
system
.
assign(f,Filename);
system
.
Reset(f,
1
);
system
.
blockRead(f,FigureIndex_,sizeof(FigureIndex_),nomread);
for
i:=
0
to
FigureIndex_
do
begin
new(Chetchik);
system
.
blockRead(f,Chetchik^,SizeOf(Chetchik^),nomread);
FigureList_Elem_
.
Add(Chetchik);
end
;
system
.
close(f);
end
;
if
FormSapr
.
Panel_Visual_Raskroj1<>
nil
then
Panel_Visual_Raskroj1
.
WMPaint(Msg1)
else
Panel_Visual_Raskroj2
.
WMPaint(Msg1);
end
;