|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как считать матрицу из .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
|
|||
|
|||
у меня есть новая версия кода, но данные все равно выводятся не правильно (жирным то, что не выводится):
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
|
|||
|
|||
Дешевле будет, если сначала текстовый файл прочитать в TStrings.
А уже там "расшифровать" и записать в TStringGrid. |
#4
|
||||
|
||||
Из кода совершенно непонятно какого типа a[i][j]? Хотя судя по IntToStr(a[i,j]) это видимо целое. Тогда у вас вообще неправильно все будет.
Вы открываете файл как текст, читаете как строку и зафигачиваете это значение в число. Размер данных и способ хранения их в файле соверешенно разные. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
А можно чуть -чуть подробней сказать что именно мне надо сделать? Я не понимаю как мне сразу целый фаил можно считать в строку.
|