Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Чем в данном случае лучше воспользоваться   Найти похожие ветки 

 
tolstiak   (2003-10-27 16:17) [0]

Уважаемые, подскажите как правильно сделать:
есть 3 combobox"а с некой информацией.
величина R зависит от всех combobox"ов, т.е. в зависимости от того что там выбрано. If....then очень долго и муторно...
Как это сделать?


 
хз   (2003-10-27 16:20) [1]

> есть 3 combobox"а с некой информацией.

С какой конкретно - числа, строки? Что с этой информацией надо делать?


 
Reindeer Moss Eater   (2003-10-27 16:21) [2]

If....then очень долго и муторно...

Что долго?


 
Малиновский Владимир   (2003-10-27 16:24) [3]

Если не хотите реализовывать функцию от трех перменных с помощью IF - ов, то создайте 3-мерный массив размерностью (ЧИСЛО_ВОЗМОЖНЫХ_ЗНАЧЕНИЙ_КОМБО_1)*(ЧИСЛО_ВОЗМОЖНЫХ_ЗНАЧЕНИЙ_КОМБО_2)*(ЧИСЛО_ВОЗМОЖНЫХ_ЗНАЧЕНИЙ_КОМБО_3),
и инициализируйте его необходимыми результирующими значениями, которые хотите получать. Затем просто извлекаете из массива нужное значение, просто обращаясь к массиву значений
ArrValues[Значение_Индекса_Комбо_1, Значение_Индекса_Комбо_2,Значение_Индекса_Комбо_3].
Правда, объемы большие, зато скорость!


 
Reindeer Moss Eater   (2003-10-27 16:24) [4]

Грамотно составленный if else if работает не медленно.
А самое главное нет ничего, что бы работало принципиально быстрее.


 
Малиновский Владимир   (2003-10-27 16:25) [5]

2 Reindeer Moss Eater
- выборка из массива значений быстрее!


 
хз   (2003-10-27 16:25) [6]

> Что долго?

Он наверное перепутал Мастера Delphi с сайтом телепатов...


 
tolstiak   (2003-10-27 16:38) [7]

Reindeer Moss Eater

комбо1 - 22строки породы дерева
комбо2 - 3сорта
комбо3 - 5условий эксплуатации
и в зависимости от породы дерева, сорта и условий эксплуатации, расчетное сопротивление древесины изгибу должнобыть разным.
как грамотно составить if...?


 
Sandman25   (2003-10-27 16:42) [8]

Если есть какая-то формула по какому-либо из параметров (например, для первого сорта значение в N раза больше, чем для второго, и в M раз больше, чем для третьего), то это можно использовать и сократить размерность массива. В любом случае см. [3] Малиновский Владимир (27.10.03 16:24)


 
saska   (2003-10-27 16:45) [9]

все зависит от вида ф-ции от этих трех переменных...


 
Palladin   (2003-10-27 18:57) [10]

Ну что ж, если считать что за каждым из пунктов закреплено некое числовое значение (пусть будет currency) и каждое числовое значение участвует в некой формуле (пусть будет cb1+cb2*4-cb3), то собственно никаких жутких телодвижений c if не нужно, достаточно лишь сохранить эти значения в массиве Objects класса TStrings...

что то вроде такого
type
PCurrency=^Currency;

procedure TForm1.lcAddItem(p_cb:TComboBox;p_strLine:string;p_fValue:Currency);
var
v:PCurrency;
begin
New(v);
v^:=p_fValue;
p_cb.AddItem(p_strLine,TObject(v));
end;

procedure TForm1.InitializeCBs;
begin
lcAddItem(ComboBox1,"1 порода дерева",3.14);
....

lcAddItem(ComboBox2,"1 сорт",2);
....

lcAddItem(ComboBox3,"1 условие эксплуатации",34.23);
...
end;

ну и весь расчет значения в этом случае будет выглядеть примерно так

function TForm1.lcGetValue(p_cb:TComboBox):currency;
begin
Result:=PCurrency(p_cb.Items.Objects[p_cb.ItemIndex])^;
end;

function TForm1.CalcValue:currency;
begin
result:=lcGetValue(ComboBox1)+lcGetValue(ComboBox2)*4-lcGetValue(ComboBox3);
end;


и при освобождении уже не нужных ComboBox - не забыть освободитиь выделенную память

procedure TForm1.lcClearValues(p_cb:TComboBox);
var
v:PCurrency;
i:integer;
begin
for i:=0 to p_cb.Items.Count-1 do
begin
v:=PCurrency(p_cb.Items.Objects[i]);
Dispose(v);
end;
end;


 
tolstiak   (2003-10-28 12:50) [11]

Всем большое спасибо. В проблеме разобрался. Программа работает и правильно работает.


 
Song   (2003-10-28 12:53) [12]

2tolstiak (28.10.03 12:50) [11]
Самое главное, что ты был должен разобраться без примера, только послушав совет.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.029 c
1-41590
Vinter
2003-11-04 10:10
2003.11.13
Вапрос по INI файлам


14-41923
Style
2003-10-20 13:10
2003.11.13
Товарищи программеры простите меня за DelphiChallenge :(


3-41104
3APA3A
2003-10-23 09:50
2003.11.13
Можно ли SQL запрос подставить в имя файла...


1-41476
AndreyA
2003-10-28 14:05
2003.11.13
Минимайз окон


1-41575
kaif
2003-10-26 02:18
2003.11.13
ToolBar и смена шрифта экрана.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский