Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как найти максимальное число ? [D6, WinXP]


Страницы:   1 2

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
ну их то у меня много как сделать так, чтобы они по очереди заносились?? а потом сравнивались?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо