Var
Cadr:
integer
=
100
;
procedure
TForm1
.
Button1Click(Sender: TObject);
begin
try
MsWord:=CreateOleObject(
'Word.Application'
);
except
begin
Form1
.
Memo1
.
Font
.
Color:=clRed;
Form1
.
Memo1
.
Lines
.
Add(
'MsWord не установлен.'
);
end
;
end
;
MsWord
.
Visible:=
false
;
MsWord
.
Documents
.
Open(Edit2
.
Text);
DataTable := MsWord
.
ActiveDocument
.
Tables
.
Item(
1
);
Rows := DataTable
.
Rows
.
Count;
if
Rows >
100
then
begin
for
x:=
1
to
Cadr
do
begin
Form1
.
Button4
.
Enabled:=
false
;
Form1
.
Button5
.
Enabled:=
true
;
for
y:=
1
to
7
do
begin
DataRead1[y] := VarToStr(datatable
.
cell(x+
1
,y+
2
).
range
.
formattedtext);
Val
(DataRead1[y], DataRead2[y], Code);
Form1
.
Chart1
.
Series[y-
1
].Add(DataRead2[y]);
end
;
end
;
end
else
begin
for
x:=
1
to
Rows
do
begin
Form1
.
Button4
.
Enabled:=
false
;
Form1
.
Button5
.
Enabled:=
false
;
for
y:=
1
to
7
do
begin
DataRead1[y] := VarToStr(datatable
.
cell(x+
1
,y+
2
).
range
.
formattedtext);
Val
(DataRead1[y], DataRead2[y], Code);
Form1
.
Chart1
.
Series[y-
1
].Add(DataRead2[y]);
end
;
end
;
end
;
end
;
Сотня строк файла читаются за полторы секунды. Но для того чтобы прочитать следующие сто строк от другой кнопки требуется около
5
-ти минут, хотя код такой-же.
procedure
TForm1
.
Button5Click(Sender: TObject);
begin
if
Counter=
0
then
Form1
.
Button4
.
Enabled:=
false
;
Counter:=Counter+
1
;
Form1
.
Button4
.
Enabled:=
true
;
DataTable := MsWord
.
ActiveDocument
.
Tables
.
Item(
1
);
for
x := Cadr
to
Cadr + Cadr
do
begin
for
y:=
1
to
7
do
begin
ОШИБКА? -----> DataRead1[y] := VarToStr(DataTable
.
Cell(x+
1
,y+
2
).
Range
.
FormattedText);
Val
(DataRead1[y], DataRead2[y], Code);
Form1
.
Chart1
.
Series[y-
1
].Add(DataRead2[y]);
end
;
end
;
Cadr := Cadr +
50
;
end
;