Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2015, 11:23   #1
Xo6ut
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 76
По умолчанию Работа с файлом

Здравствуйте, нужна ваша помощь. Задание таково: у нас есть программа, которая считывает матрицу из файла и выводит её сумму в 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.

Последний раз редактировалось Stilet; 25.04.2015 в 11:44.
Xo6ut вне форума Ответить с цитированием
Старый 25.04.2015, 12:25   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Хотел помочь, уже и мысли появились, что и как сделать...
Но тут увидел старопаскалевский файловый ввод/вывод и желание сразу пропало.
Да откуда ж вы это берёте? Да ещё и файл не закрыл за собой. Безобразие!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 25.04.2015, 16:36   #3
Xo6ut
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 76
По умолчанию

Скажем так, использую пока то что получается использовать
Xo6ut вне форума Ответить с цитированием
Старый 25.04.2015, 16:40   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
использую пока то что получается использовать
хватит, перестань!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 25.04.2015, 16:45   #5
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,480
По умолчанию

Цитата:
Да ещё и файл не закрыл за собой. Безобразие!
Как скопировал код так и использует )
Я бы помог если бы вы сами написали код.
uberchel вне форума Ответить с цитированием
Старый 25.04.2015, 17:05   #6
Xo6ut
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 76
По умолчанию

Есть свой код, но он не считает любую матрицу любой размерности, только заданной.
Xo6ut вне форума Ответить с цитированием
Старый 25.04.2015, 17:14   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
но он не считает любую матрицу любой размерности, только заданной.
а ты его возьми и доделай!
нефиг собирать говнокод по рунетам, пора мозги применять!
ибо тырить говнокод – это для лохов, а мозгом работать – для реальных пацанофффф!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 25.04.2015, 21:53   #8
Xo6ut
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 76
По умолчанию

Как можно реализовать счетчик открытий 1 и того же файла?
Xo6ut вне форума Ответить с цитированием
Старый 25.04.2015, 22:08   #9
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Xo6ut Посмотреть сообщение
Как можно реализовать счетчик открытий 1 и того же файла?
А это вам зачем? Что вы собрались делать?
Вадим Мошев вне форума Ответить с цитированием
Старый 25.04.2015, 22:08   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Как можно реализовать счетчик открытий 1 и того же файла?
и тут остапа п(р)онесло!...
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом на С++ Franch Помощь студентам 2 17.09.2012 03:53
работа с файлом Sergey Bi. старший Общие вопросы Delphi 5 16.05.2011 10:27
Работа с файлом.. dimorik Win Api 2 23.03.2010 21:26
Работа с файлом на Си Darh Помощь студентам 2 15.12.2009 23:44
Си++. работа с файлом milate Помощь студентам 0 08.06.2009 12:52