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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.12.2009, 12:07
romen romen вне форума
Прохожий
 
Регистрация: 21.12.2009
Сообщения: 5
Репутация: 10
По умолчанию Проблема со считыванием данных из файла, Стандартно, но... Не получается

Здравствуйте!
Столкнулся с проблемой... Задача тривиальна - в *.txt файле дан ряд в одну строку дробных чисел, к примеру:

0 0.1 1 0.777 0.5

Задача - как считать из него данные и занести в двумерный массив? Кол-во строк, столбцов - дано изначально. В общем, пишу так:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
F: File of Real;
cmas: array [1..1000,1..1000] of Real;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
stk:=StrToInt(Edit1.Text); // кол-во строк
stb:=StrToInt(Edit2.Text); // кол-во столбцов
 
AssignFile(F,'INPUT.txt');
Reset(F);
While not eof(F) do
begin
for i:=1 to stk do
begin
for j:=1 to stb do Read(F,cmas[i,j]);
end;
end;
Admin: Не забываем про теги!

А он ничего не читает...
Помогите, пожалуйста, разобраться...

Последний раз редактировалось Admin, 21.12.2009 в 12:12.
Ответить с цитированием
  #2  
Старый 21.12.2009, 12:31
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Я бы сделал так...
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
F: File of Real;
cmas: array [1..1000,1..1000] of Real;
 
procedure TForm1.Button1Click(Sender: TObject);
var
 n, i, j : word;
begin
 stk:=StrToInt(Edit1.Text); // кол-во строк
 stb:=StrToInt(Edit2.Text); // кол-во столбцов
 i := 0;
 j := 0;
 AssignFile(F,'INPUT.txt');
 Reset(F);
 for n := 0 to FileSize(F) do//пройдемся по всему файлу
 begin
  Seek(F, n);//помечаем очередную строку в файле
  Read(F, cmas[i, j]);//читаем очередную строку
  inc(i);//увеличиваем строку в массиве
  if i = stk then//если дошли до кол-ва строк
  begin
   i := 0;//обнуляем кол-во строк
   inc(j);//увеличиваем кол-во столбцов
  end;
  if j = stb then//если дошли до кол-ва столбцов, то
   break;//выйти из цикла
 end;
end;
Возможны и другие способы...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #3  
Старый 21.12.2009, 12:58
romen romen вне форума
Прохожий
 
Регистрация: 21.12.2009
Сообщения: 5
Репутация: 10
По умолчанию

Спасибо, но тоже не работает.. Что означает, например, то, что выдается ошибка к примеру: "Вы не объявили эту переменную, но обращаетесь к ней". Хотя переменная объявлена.
Ответить с цитированием
  #4  
Старый 21.12.2009, 14:02
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Скажи, что не работает...или что неправильно работает...
И про какую переменную идет речь??? Может просто неправильно, или не в том месте ее объявил...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #5  
Старый 22.12.2009, 10:41
romen romen вне форума
Прохожий
 
Регистрация: 21.12.2009
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от NIch
Скажи, что не работает...или что неправильно работает...
И про какую переменную идет речь??? Может просто неправильно, или не в том месте ее объявил...

Да ладно, все в порядке, дело было в объявлении файла.. Разобрался. Спасибо
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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