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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2009, 03:48   #1
subsonic
Пользователь
 
Регистрация: 03.01.2008
Сообщений: 48
По умолчанию Как работать с массивом Edit-ов

Существует несколько Едитов, (например 5).как по присваевать в масив,
значения этих едитов. по порядку. можно было бы a[1]:=edit1.text;
a[2]:=edit2.text; и так до последнего. если их пять то еще ладно. а если их сто.Дак что, всеравно вручную забивать. или можно как-то счетчиком?
subsonic вне форума Ответить с цитированием
Старый 02.03.2009, 07:21   #2
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от subsonic Посмотреть сообщение
...или можно как-то счетчиком?
Можно. Пройтись в цикле по всем существующим компонентам и выбрать в массив только нужного типа. Тема уже много раз обсуждалась.
Jeni вне форума Ответить с цитированием
Старый 02.03.2009, 07:27   #3
subsonic
Пользователь
 
Регистрация: 03.01.2008
Сообщений: 48
По умолчанию Проблема с математикой массивов...

Почему не выполняеться математика с массивами? помогите решить это. Еще посоветуйте как сделать это все проще.
Код:
var sum:array[21..38] of tedit;
    kol:array[1..18] of tedit;
    ceni:array[1..18] of string;

procedure TForm1.Button1Click(Sender: TObject);
 var q,z,c:integer; temp:real;
begin
temp:=0;
for z:= 1 to 18 do
 begin
 kol[z].Text:=TEdit(Form1.FindComponent('Edit'+IntToStr(z))).Text;
 end;
c:=0;
for q := 21 to 38 do
 begin
 c:=c+1;
 sum[q].Text:=realtostr(strtoreal(kol[c].Text)*strtoreal(ceni[c]),2);
 temp:= temp + strtoreal(sum[q].Text);
 end;
edit19.Text:=realtostr(temp,2);
end;



когда я делаю выдилиную математику вот так, все работает


{
edit21.Text:=realtostr( strtoreal(edit1.Text)*strtoreal(ceni[1]),2 );
edit22.Text:=realtostr( strtoreal(edit2.Text)*strtoreal(ceni[2]),2 );
edit23.Text:=realtostr( strtoreal(edit3.Text)*strtoreal(ceni[3]),2 );
edit24.Text:=realtostr( strtoreal(edit4.Text)*strtoreal(ceni[4]),2 );
edit25.Text:=realtostr( strtoreal(edit5.Text)*strtoreal(ceni[5]),2 );
edit26.Text:=realtostr( strtoreal(edit6.Text)*strtoreal(ceni[6]),2 );
edit27.Text:=realtostr( strtoreal(edit7.Text)*strtoreal(ceni[7]),2 );
edit28.Text:=realtostr( strtoreal(edit8.Text)*strtoreal(ceni[8]),2 );
edit29.Text:=realtostr( strtoreal(edit9.Text)*strtoreal(ceni[9]),2 );
edit30.Text:=realtostr( strtoreal(edit10.Text)*strtoreal(ceni[10]),2 );
edit31.Text:=realtostr( strtoreal(edit11.Text)*strtoreal(ceni[11]),2 );
edit32.Text:=realtostr( strtoreal(edit12.Text)*strtoreal(ceni[12]),2 );
edit33.Text:=realtostr( strtoreal(edit13.Text)*strtoreal(ceni[13]),2 );
edit34.Text:=realtostr( strtoreal(edit14.Text)*strtoreal(ceni[14]),2 );
edit35.Text:=realtostr( strtoreal(edit15.Text)*strtoreal(ceni[15]),2 );
edit36.Text:=realtostr( strtoreal(edit16.Text)*strtoreal(ceni[16]),2 );
edit37.Text:=realtostr( strtoreal(edit17.Text)*strtoreal(ceni[17]),2 );
edit38.Text:=realtostr( strtoreal(edit18.Text)*strtoreal(ceni[18]),2 );
}
как кодить, подскажите?
subsonic вне форума Ответить с цитированием
Старый 02.03.2009, 07:36   #4
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

В секции var объявлено kol:array[1..18] of tedit;
А в коде почему-то используется присвоение не компонентов, а их свойств: kol[z].Text:=TEdit(Form1.FindComponent('Edit'+ IntToStr(z))).Text;

А ведь сам массив kol еще не заполнен, к тому же следует учитывать, что в массив сохраняется не сам компонент, а только ссылка на него. Т.е, следует писать:
Код:
kol[z]:=TEdit(Form1.FindComponent('Edit'+IntToStr(z)));
А потом использовать в любом месте kol[...].Text, например: X:=strtoreal(kol[5].Text);

Ну а массив sum проще объявить как of string, е еще проще как of Extended

Последний раз редактировалось Jeni; 02.03.2009 в 07:39.
Jeni вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работать с FastReport HIC Общие вопросы Delphi 6 26.12.2008 10:50
Как работать с XML? Никки Общие вопросы Delphi 7 18.01.2008 00:56
как правильно работать с массивом TStrings Air Общие вопросы Delphi 6 19.12.2007 17:55
Как работать c USB? Araver Общие вопросы Delphi 4 05.11.2007 18:41
Как работать с графикой? Yogurt Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 29.04.2007 07:12