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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.01.2011, 17:08
juggle juggle вне форума
Прохожий
 
Регистрация: 12.12.2010
Сообщения: 24
Репутация: -20
Вопрос Как считать матрицу из .txt фаила?

Помогате, пожалуйста, с аргоритмом считывания данных из фаила.
Моя задача: загрузить в StringGrid данные из фаила, загруженного через OpenDialog.
В .txt фаиле матрица записана вот так:
1 2 5
3 5 4
2 3 5

В моем варианте проги получается считывать начиная с 3-ей строки и записываются все цифры сразу в одну ячейку.
Подскажите, что надо поменять?

Код:
//DownLoad the file
procedure TForm1.Button2Click(Sender: TObject);

  var
  i,j,m,n:integer;
  b,c:string;
  input:TextFile;

begin
if OpenDialog1.Execute then
      begin
      AssignFile(input, OpenDialog1.FileName);
      Reset(input);

           i:=0;
           while not EOF(input) do
           begin
            j:=0;
            while not EOLN(input) do
                 begin
              //  Read(a[i][j]); // does not work
                   ReadLn(input,b);
                   StringGrid1.Cells[i,j]:=b;
                 j := j + 1;
                 end;
            i := i + 1;
            ReadLn(input,c);
            StringGrid1.Cells[i,j]:=c;
            end;

//Show values from file in grid
        m:=strtoint(Edit1.Text);
        n:=strtoint(Edit2.Text);
            for i:=0 to m-1 do
            begin
                 for j:=0 to n-1 do
                 begin
                 StringGrid1.cells[j,i]:=IntToStr(a[i,j]);
                 end;
            end;
        CloseFile(input);
        end;
end;
Ответить с цитированием
  #2  
Старый 07.01.2011, 17:35
juggle juggle вне форума
Прохожий
 
Регистрация: 12.12.2010
Сообщения: 24
Репутация: -20
Злость

у меня есть новая версия кода, но данные все равно выводятся не правильно (жирным то, что не выводится):
1 2 3
3 4 5
6 4 3
Кто нибудь скажите почему не выводятся начальные значения строк, начиная со второй?
Код:
begin
if OpenDialog1.Execute then
      begin
      AssignFile(input, OpenDialog1.FileName);
      Reset(input);

           i:=0;
           while not EOF(input) do
           begin
            j:=0;
            while not EOLN(input) do
                 begin
                 Read(input, a[i][j]);
                 j := j + 1;
                 end;
            i := i + 1;
            Read (input, a[i][j]);

            end;

//Show values from file in grid
        m:=strtoint(Edit1.Text);
        n:=strtoint(Edit2.Text);
            for i:=0 to m-1 do
            begin
                 for j:=0 to n-1 do
                 begin
                 StringGrid1.cells[j,i]:=IntToStr(a[i,j]);
                 end;
            end;
        CloseFile(input);
        end;
end;
end.
Ответить с цитированием
  #3  
Старый 08.01.2011, 02:19
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Дешевле будет, если сначала текстовый файл прочитать в TStrings.
А уже там "расшифровать" и записать в TStringGrid.
Ответить с цитированием
  #4  
Старый 08.01.2011, 03:19
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Из кода совершенно непонятно какого типа a[i][j]? Хотя судя по IntToStr(a[i,j]) это видимо целое. Тогда у вас вообще неправильно все будет.
Вы открываете файл как текст, читаете как строку и зафигачиваете это значение в число. Размер данных и способ хранения их в файле соверешенно разные.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 03.02.2011, 21:55
juggle juggle вне форума
Прохожий
 
Регистрация: 12.12.2010
Сообщения: 24
Репутация: -20
По умолчанию

А можно чуть -чуть подробней сказать что именно мне надо сделать? Я не понимаю как мне сразу целый фаил можно считать в строку.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter