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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.07.2008, 11:45
Yogurt Yogurt вне форума
Прохожий
 
Регистрация: 28.06.2008
Сообщения: 11
Репутация: 10
По умолчанию из файла в массив

Народ, нужна помощь
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm4.FormShow(Sender: TObject);
var i:integer; Lznach:array of real;
begin
      AssignFile(fl,'file\L\L-znach.txt');
      i:=1;
      reset(fl);
      while not eof(fl) do
      begin
            Readln(fl,stroka);
-->       Lznach[i]:=StrToFloat(stroka);
            i:=i+1;
      end;
end;
Мне надо, чтобы каждому элементу массива Lznach присваивалось значение из текстового файла, но в отмеченной строке он выдаёт ошибку. А если я вместо Lznach поставлю не массив, то он спокойно присваивает значение.
Ответить с цитированием
  #2  
Старый 04.07.2008, 12:06
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Массив-то динамический, нужно определить длину, например: SetLength(Lznach, 100);
Ответить с цитированием
  #3  
Старый 04.07.2008, 12:34
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm4.FormShow(Sender: TObject);
var i:integer; Lznach:array of real;
begin
      AssignFile(fl,'file\L\L-znach.txt');
      i:=1;
      reset(fl);
      while not eof(fl) do
      begin
            Readln(fl,stroka);
            SetLength(Lznach, Length(Lznach) + 1);
            Lznach[i]:=StrToFloat(stroka);
            i:=i+1;
      end;
end;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #4  
Старый 04.07.2008, 12:57
Yogurt Yogurt вне форума
Прохожий
 
Регистрация: 28.06.2008
Сообщения: 11
Репутация: 10
По умолчанию

аллилуя братья, только теперь ошибку какую-то выдаёт и вкладку под названием CPU открывает....
вот что там появляется

причём тогда, когда я полностью закрываю прогу, т.е. unit1 когда закрываю

Последний раз редактировалось Yogurt, 04.07.2008 в 13:37.
Ответить с цитированием
  #5  
Старый 04.07.2008, 13:51
Yogurt Yogurt вне форума
Прохожий
 
Регистрация: 28.06.2008
Сообщения: 11
Репутация: 10
По умолчанию

и ещё
по всем законам логики, когда в файле у меня три числа: 1 2 3, только в столбец, то эта самая Lznach должна принять значения 1 2 и 3, но она принимает значения 0 0 3.
Ответить с цитированием
  #6  
Старый 04.07.2008, 14:03
Phedor Phedor вне форума
Начинающий
 
Регистрация: 28.02.2008
Сообщения: 118
Репутация: 21
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
begin
  AssignFile(fl,'file\L\L-znach.txt');
  reset(fl);
  Setlength(Lznach, 0);
  i:=0;
  while not eof(fl) do
  begin
    SetLength(Lznach, Length(Lznach) + 1);
    Readln(fl, Lznach[i]);
    inc(i);
  end;
  CloseFile(fl);
end;
Ответить с цитированием
  #7  
Старый 04.07.2008, 14:15
Yogurt Yogurt вне форума
Прохожий
 
Регистрация: 28.06.2008
Сообщения: 11
Репутация: 10
По умолчанию

это здорово, но теперь, вместо 2 он пишет 2,1252470363899E-314 и тому подобное
Ответить с цитированием
  #8  
Старый 04.07.2008, 14:21
Phedor Phedor вне форума
Начинающий
 
Регистрация: 28.02.2008
Сообщения: 118
Репутация: 21
По умолчанию

Цитата:
Сообщение от Yogurt
это здорово, но теперь, вместо 2 он пишет 2,1252470363899E-314 и тому подобное
Это старый прикол float и real, они мантису не правильно показывают. Если действительно нужны числа со знаком после запятой, то округляй. RoundTo(Lznach[i], 2);
Ответить с цитированием
  #9  
Старый 04.07.2008, 14:24
Yogurt Yogurt вне форума
Прохожий
 
Регистрация: 28.06.2008
Сообщения: 11
Репутация: 10
По умолчанию

нет, не в том дело, 9 он тоже похоже показывал 2,545004 чё-то такое.
спасибо, ошибка с выводом была, а не в твоём коде, всё теперь ок. Да прибудет с тобой сила...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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