Велес |
Отправлено: 21.11.2003, 19:54 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 18
|
Добрый вечер, ещё разочек!
Помогите, никак не соображу....
Задача: Есть форма, в которой расположен набор кнопок. Нажимается комбинация кнопок. Алгоритм следующий:
1. На форме 1 выбирается кнопка. Открывается Форма 2 с некоторыми параметрами, указывающими на принадлежность к Форме 1. В Форме 2 расположено 3 объекта Edit. В них вносится по одному значению, которые помещаются в соответствующие массивы. Закрываем Форму 2.
2. На Форме 1 выбираем другую или ту же кнопку. Открывается Форма 2..... и т.д.
3. После набора в Форме 1 соответствующей комбинации кнопок происходит переход к Форме 3, где данные из массивов (Форма 2) помещаются в формулы, производится расчёт в цикле и каждое посчитанное значение (точнее группа из 3-х значений) выводятся на печать.
ПРОБЛЕМА:
При добавлении на Форме 2 в массивы несколько раз (без закрытия и повторного открытия по другому вызову) и дальнейшем расчёте в Форме 3 — всё работает нормально. Если же идти по пути, который и был задуман, то в Форме 3 выводится только значения соответствующие расчёту по последним элементам массива, которые были введены.
Т.е. вопрос получается таков: как сохранить весь массив, поскольку он видимо обнуляется при каждом новом вызове Формы 2 из Формы 1.
КОД: (Форма 3 — расчёт)
int w = Form1->k;
for(int z = 0; z < w; z ++)
{
C1[z] = ((-6 * me * pow (c, 2))*(Form1->alfa[z])*alfgts)/(((Form1->alfa[z])/(Form1->ksia[z]))+(alfgts/ksigts));
C2[z] = ((45 * pow(h, 2) * (Form1->alfa[z]) * alfgts * ((1/(2*((alfgts/ksigts)/((Form1->alfa[z])/(Form1->ksia[z]))+1)))+(1/(2*(((Form1->alfa[z])/(Form1->ksia[z]))/(alfgts/ksigts)+1)))))/(32*pow(M_PI, 2)*me));
b1 = 1 + 4*C2[z]/(3*C1[z]*pow(Form1->r0[z],2));
b2 = Form1->q[z]*Form1->r0[z];
B[z] = 6*C1[z]*exp(b2)*b1/(Form1->q[z]*pow(Form1->r0[z], 7));
RichEdit1->Lines->Insert(0, "" + FloatToStr(C1[z]));
RichEdit1->Lines->Insert(1, "" + FloatToStr(C2[z]));
RichEdit1->Lines->Insert(2, "" + FloatToStr(B[z]));
}
Заранее благодарен.
Отредактировано Велес — 21/11/2003, 21:07 |
|
exp |
Отправлено: 21.11.2003, 21:59 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Ага, кажется просек.
Насколько понимаю, RichEdit1->Lines->Insert(i,...) заменяет значения i-той строки, вот и получается, что ты выводишь в одни строки РичЭдита свою информацию, которая с каждым проходом цикла затирается на новую.
Попробуй RichEdit->Lines->Add(...);
|
|
|