![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как найти максимальное число ? [D6, WinXP]
Natalie © (2005-05-19 09:39:00)Здравствуйте!!! Подскажите пожайлуста. Сущеcтвуют несколько Edit, причём они расположены на форме не по порядку. Т е edit2.text[; edit4.text; edit20.text;
в них после процедурки заносятся данные. Так вот надо выделить наиболее максимальное число из этих эдитов.
Пожскажите как это сделать?? Вернее как заносить данные из edit в переменную для справнения с другими?
очень прошу, кто знает напишите!! спасибо!
Anatoly Podgoretsky (2005-05-20 22:16:00) [1]begin...end © (20.05.05 08:14) [18]
Я не меняю, что использовать зависит от задачи.
Marser (2005-05-20 19:08:00) [2]
> Anatoly Podgoretsky © (19.05.05 20:18) [17]
> Marser © (19.05.05 18:51) [16]
> Разве что они расположены на разных панелях...
:-)
> begin...end © (20.05.05 08:14) [18]
Всё зависит от конкретного случая. Но я без крайней надобности components не перебирал бы.
Defunct (2005-05-20 08:36:00) [3]Natalie (19.05.05 13:35) [8]
На кой там 20 edit'ов?
Это ж как с таким чудищем работать?
Мозги на ручнике + лень = хреново.
PS: Лучше б ты в кулинарии практиковалась.
begin...end (2005-05-20 08:14:00) [4]> Anatoly Podgoretsky © (19.05.05 20:18) [17]
Быстро же Вы своё мнение меняете...
Не так давно тоже за Controls были...
Anatoly Podgoretsky (2005-05-19 20:18:00) [5]Marser © (19.05.05 18:51) [16]
Они могут бысть расположены на разных панелях, прикажешь рекурсию устраивать? Только этого не хватало.
Marser (2005-05-19 18:51:00) [6]
> begin...end © (19.05.05 17:22) [14]
> > Marser © (19.05.05 17:07) [13]
>
> Edit'ы могут быть расположены на панели.
Вообще-то да, но в таком случае значительно эффективнее использовать controls самой панели.
Разве что они расположены на разных панелях...
stelius (2005-05-19 17:39:00) [7]Имхо лучче разделить обработку данных и отображение их юзеру.
Т.е. заносить данные в массив, например, и с ним работать (искать максимум, минимум, среднее и пр.), а для отображения данных написать процедурку, которая будет заносить данные из массива в Edit'ы.
begin...end (2005-05-19 17:22:00) [8]> Marser © (19.05.05 17:07) [13]
Edit'ы могут быть расположены на панели.
Marser (2005-05-19 17:07:00) [9]
> Юрий Зотов © (19.05.05 14:00) [11]
А я бы ещё поинтересовался, почему components, а не controls?
Массив Components включает в себя все компоненты, принадлежащие форме. Controls - лишь визуальные компоненты.
Reindeer Moss Eater (2005-05-19 14:02:00) [10]Щас мадмуазель скажет, что этот после этого изменения код не находит максимального числа вообще.
:)
Юрий Зотов (2005-05-19 14:00:00) [11]> Natalie (19.05.05 13:35) [8]
Извините, мадемуазель, а ПОДУМАТЬ хотя бы НЕМНОГО - это можно?
if (Components[i] is TEdit) and (Components[i].Tag < 0)then...
Все остальное - без изменений. Как видите, подумать и добавить нужно было действительно совсем чуть-чуть.
Skyle (2005-05-19 13:41:00) [12]А в процедуре обработки максимальное число не получается посчитать?
Reindeer Moss Eater (2005-05-19 13:36:00) [13]Пометить выбранные.
Natalie (2005-05-19 13:35:00) [14]ну мне же не надо пересчитывать все компоненты edit!
а только некоторые, а другие комн-ты edit уже служал для других целей, а он будет считать все ком-ты edit.
как сделать чтобы считал только выбранные!?
Юрий Зотов (2005-05-19 13:31:00) [15]> Natalie (19.05.05 12:46) [2]
function TForm1.GetMaxValue: double;
var
i: integer;
Value: double;
First: boolean;
begin
Result := 0; // Чтобы убрать warning компилятора.
First := True;
for i := 0 to ComponentCount - 1 do
if Components[i] is TEdit then
with TEdit(Components[i]) do
if First then
begin
First := False;
Result := StrToFloat(Text)
end
else
begin
Value := StrToFloat(Text);
if Result < Value then
Result := Value
end
end;
I'm (2005-05-19 13:28:00) [16]да и с формулировкой тоже: "наиболее максимальное число"
PZ (2005-05-19 13:28:00) [17]
Uses Math;
procedure TForm1.Button1Click(Sender: TObject);
Var
I : Integer;
MaxReal, M : Real;
begin
MaxReal := -1e-6;
For I := 0 to ComponentCount-1 do
If (Components[I] is TEdit) then
begin
M := StrToFloat((Components[I] as TEdit).Text);
MaxReal := Max(MaxReal, M);
end;
// Посмотреть, что получилось
Label1.Caption := FloatToStr(MaxReal);
end;
Anatoly Podgoretsky (2005-05-19 12:53:00) [18]Массив Components формы, перебирай в цикле.
С постановкой задачи явно не порядок.
Romkin (2005-05-19 12:52:00) [19]TForm.Components, TForm.ComponentsCount
Natalie (2005-05-19 12:46:00) [20]IntegerVar := StrToInt(Edit1.Text)
DoubleVar := StrToFloat(Edit1.Text)
ну это понятно что присвоить данные с edit
ну их то у меня много как сделать так, чтобы они по очереди заносились?? а потом сравнивались?