Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #6  
Старый 28.04.2015, 02:06
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от lmikle
Читай построчно. Если встретил запятую (последняя строка), то разбираешь ее отдельно...
Вот что-то похожее
Код:
uses Math;
procedure TFMain.BTInputClick(Sender: TObject);
var
 M: array of array of integer;
 f, f1: TextFile;
 i, j, b, OldSum, AllSum: integer;
 s: string;
begin
 if od1.Execute  then
  begin
   Memo1.Clear;
   AssignFile(f, od1.filename);

   Reset(f);
   i:= 0;
   AllSum:= 0;
   OldSum:= 0;

   while not Eof(f) do
    begin
     ReadLn(f, s);
     SetLength(M, i+1);
     b:= Pos(',', s);

     if b > 0 then
      begin
       OldSum:= StrToInt(Copy(s, b+1, Length(s)));
       Delete(s, b, Length(s));
      end;

     b:= 0;

     for j := 1 to Length(s)-1 do
      if (s[j] in  ['0'..'9']) then
       begin
        SetLength(M[i], b+1);
        M[i, b]:= StrToInt(s[j]);
        Inc(b);
       end;

     Inc(AllSum, SumInt(m[i]));
     Inc(i);
    end;{while}

  if OldSum = AllSum then
   Memo1.Lines.Add('файл обработан')
   else
    begin
     Reset(f);
     AssignFile(f1,'tmp');
     Rewrite(f1);

     while not Eof(f) do
      begin
       ReadLn(f, s);
       b:= Pos(',', s);

       if b > 0 then
        begin
         Delete(s, b, Length(s));
         s:= s + ',' + IntToStr(AllSum);
        end;

      Writeln(f1, s);
     end;{while}

      CloseFile(f);
      CloseFile(f1);

      if DeleteFile(od1.filename) then
         RenameFile('tmp', od1.filename);

      Memo1.Lines.Add(('Сумма элементов матрицы=' + IntToStr(AllSum)));
   end;
 end; {od1.Execute}

end;
без оптимизации, вот как шёл набор, так и есть

З.Ы. можно ещё второго валю завалить, извнт за тавтологию, в смысле убрать лишний цикл уаил, совместив операции чтения\записи в первом, но так осталось для наглядности

Последний раз редактировалось Alegun, 28.04.2015 в 20:05.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025