Здравствуйте, нужна ваша помощь. Задание таково: у нас есть программа, которая считывает матрицу из файла и выводит её сумму в memo в виде строки "Сумма элементов матрицы=....". Нужно сделать так, чтобы по нажатию кнопки сохранить, программа сохраняла эту строку с суммой эл в файл , где лежала матрица(т.е теперь у нас файл с матрицей и с этой строкой). Теперь,если мы вызываем этот же файл, программа должна сверить сумму эл матрица в файле с суммой в этой строке, которая лежит в файле, и если сумма совпадает написать " файл обработан", если матрица была изменена, то он опять сверяет сумму со строкой(сумма получается уже другая) и должен снова посчитать сумму матрица и вывести её в мемо.
Вот код по подсчету суммы эл матрицы.
Код:
unit UnProt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFMain = class(TForm)
BTInput: TButton;
BTexit: TButton;
Memo1: TMemo;
OD1: TOpenDialog;
Label1: TLabel;
Label2: TLabel;
procedure BTexitClick(Sender: TObject);
procedure BTInputClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type TMatrix = Array of Array of real;
var
FMain: TFMain;
implementation
{$R *.dfm}
procedure TFMain.BTexitClick(Sender: TObject);
begin
if (messagedlg('Вы действительно хотите выйти?',mtconfirmation,[mbYes,mbNo],0)=mryes) then
close;
end;
procedure TFMain.BTInputClick(Sender: TObject);
var M: TMatrix;
summ:real;
F: TextFile;
c: Char;
i, j: Integer;
s:string;
begin
if od1.Execute then
AssignFile(F,od1.filename);
Reset(F);
j := 0;
i := 0;
summ:=0;
// читаем пока не конец файла
while not Eof(F) do
begin
j := 0;
// читаем пока не встретится перенос строки
while not Eoln(F) do
begin
SetLength(M, i + 1); // увеличиваем размер строк у матрицы на +1
SetLength(M[i], j + 1); // увеличиваем размер столбцов для первой строки
Read(F, M[i, j]); // считываем данные
j := j + 1; // счетчик столбцов
end;
Read(F, c); // заглушка, чтобы передвигаться по файлу
i := i + 1; // счетчик строк
end;
memo1.visible:=true;
// вывод результата
for i := 0 to Length(M) - 1 do
begin
for j := 0 to Length(M[i]) - 1 do
begin
S := S + floatToStr(M[i, j]) + ' ';
summ:=summ+M[i, j];
end;
S := S + #13#10;
end;
memo1.Lines.Add(s);
memo1.Lines.Add(('Сумма элементов матрицы='+floattostr(summ)));
end;
end.