![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Помогате, пожалуйста, с аргоритмом считывания данных из фаила.
Моя задача: загрузить в 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
|
|||
|
|||
|
А можно чуть -чуть подробней сказать что именно мне надо сделать? Я не понимаю как мне сразу целый фаил можно считать в строку.
![]() |