Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2013, 00:06   #1
Xatiko
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 11
Вопрос Работа с Динамическим массивом эдитов

Доброго времени суток!
Подскажите в таком вопросе:
На форме есть memo и buton, в memo мы вводим число нажимаем на buton и создаются edit'ы столько сколько мы указали. Работает все хорошо, но мне надо производить арифметические действия с edit'ами. Например memo2.text:=edit1+edit2; .
Код:

Код:
procedure TForm1.Button1Click(Sender: TObject);

var Lab: Array of TLabel;
    Ed: Array of TEdit;
    i: Integer;
    n: integer;
  begin
  n := 500;
  SetLength(Lab, n+1);
  SetLength(Ed, n+1);

  for i:=1 to strtoint(memo1.Text) do
    begin
      Lab[i] := TLabel.Create(self);
      Lab[i].Parent := self;
      Lab[i].Left := 10;
      Lab[i].Top := i*30+20;
      Lab[i].Caption := 'Этикетка'+IntToStr(i);
      Ed[i] := TEdit.Create(self);
      Ed[i].Parent := self;
      Ed[i].Left := 150;
      Ed[i].Top := i*30+20;
      Ed[i].Text := 'Поле ввода '+IntToStr(i);
      Ed[i].Name:= 'Edit'+IntToStr(i);
    end;
 end;
Запись типо: memo2.text:=IntToStr(StrToInt(Edit1 .text)+StrToInt(Edit2.text));
Не пойдет выдает ошибку " is not a valid integer value"
Просьба откликнуться))




___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 05.03.2013 в 08:49.
Xatiko вне форума Ответить с цитированием
Старый 05.03.2013, 01:06   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

так пиши:
Код:
memo2.text:=IntToStr(StrToIntDef(Edit1.text, 0)+StrToIntDef(Edit2.text, 0))
пустая строка не равна нулю, поэтому и падает

Последний раз редактировалось GreenWizard; 05.03.2013 в 01:11.
GreenWizard вне форума Ответить с цитированием
Старый 05.03.2013, 01:21   #3
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

кстати, приведённый код создания контролов ооооооочень странный
1) массивы не убиваются, а висят в памяти
2) зачем массив на 500 элементов, если нужно опр. количество? (из memo1)
3) с именами могут быть проблемы... если существует где-то компонент с таким именем, то вылезет ошибка

думаю, что там бОльшие проблемы с архитектурой проги
GreenWizard вне форума Ответить с цитированием
Старый 05.03.2013, 11:13   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

1.
Код:
var Lab: Array of TLabel;
    Ed: Array of TEdit;
перенести в глобальное объявление а не в локальную переменную процедуры
2.
Код:
memo2.text:=IntToStr(StrToInt(Ed[i] .text)+StrToInt(Ed[i+1].text));
только убедись что числа есть...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 05.03.2013, 11:29   #5
Xatiko
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 11
По умолчанию

Спасибо) Тема закрыта.
Xatiko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с двумерны динамическим массивом Serega_86 Помощь студентам 2 02.09.2012 15:40
(delphi) работа с динамическим массивом anubiss Помощь студентам 0 21.05.2012 21:09
Работа с динамическим массивом sand Общие вопросы C/C++ 3 22.08.2008 12:48
Работа с динамическим массивом и его елементами Padovan Паскаль, Turbo Pascal, PascalABC.NET 2 21.05.2008 20:55
проблема с динамическим массивом romeo007.06 Общие вопросы Delphi 1 03.04.2008 20:18