Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Проверка на заполненость нескольких эдитов   Найти похожие ветки 

 
CRACKISH   (2004-08-13 08:52) [0]

Люди вот у меня есть дапустим 3 Editа! Мне надо их проверить на пустую строку или ноль!
Я делаю так:
if ((Edit1.text:="0") or (Edit1.text:="")) or ((Edit2.text:="0") or (Edit2.text:="")) or ((Edit3.text:="0") or (Edit3.text:="")) then ...
Но реагирует только на первый edit! Помогите! Спасибо!


 
TUser ©   (2004-08-13 08:55) [1]

Во-первых, есть еще and.
И лучше, наверное, так
result:=true; i:=1;
while result and (i < 4) do begin
S:=(FindComponent("Edit"+inttostr(i)) as TEdit).Text;
result:=(S = "0") or (S = "");
inc (i);
end;
if result then ...


 
BillyJeans   (2004-08-13 09:00) [2]

2 TUser ©   (13.08.04 08:55) [1]

а если последний S<>"0" ?


 
antonn ©   (2004-08-13 10:03) [3]

if (lenght(Edit1.text)<>0) and (lenght(Edit2.text)<>0) and (lenght(Edit3.text)<>0) then begin
if (strtofloat(Edit1.text)<>0) and (strtofloat(Edit2.text)<>0) and (strtofloat(Edit3.text)<>0) then begin

........//Делаем, что надо

end;end;

Только делиметер надо проверять, если число дробное.
А если заранее известно что не дробное то strtofloat заменить на strtoint.


 
GrayFace ©   (2004-08-13 10:30) [4]

CRACKISH   (13.08.04 8:52)
Не парься с Edit! Используй SpinEdit!
if (Spinedit1.Value<>0) and (Spinedit1.Value<>0) and (Spinedit1.Value<>0) then
! А если нужны дробные, замени все OR"ы между скобками на AND"ы! Все! Еще один восклицательный знак для красоты! И Еще один! Зачем ты каждое предложение заканчиваешь восклицательными знаками?!
PS: Ну и еще 2 в 1!! (2 восклицательных знака в 1 предложении!!)

TUser ©   (13.08.04 8:55) [1]
Нет. Хуже. Твой код все-равно придется заменить на обычный, если дать уникальные имена эдитам.

antonn ©   (13.08.04 10:03) [3]
К StrToFloat еще надо try.


 
GrayFace ©   (2004-08-13 10:31) [5]

> уникальные имена

т.е. особые: EditCount и т.д.


 
KSergey ©   (2004-08-13 10:31) [6]

> [1] TUser ©   (13.08.04 08:55)
> И лучше, наверное, так
> S:=(FindComponent

Чем же лучше-то? Как-бы короче, но выполняться - дольше. А если еще в Edit10 надо будет проверить? Вводить доп. проверки на значение i? В итоге их кол-во (проверок) превысит сложность изначального кода
Так чем лучше-то?

Тогда уж (типа универсально в плане расширяемости)

function TestEdit(arrEd: array of TEdit): Boolean;
var
  i: Integer;
begin
  Result := FALSE;  // а то подозреваю компилятор скажет "мжет быть не инициализирована"
  for i := Low(arrEd) to High(arrEd) do
  begin
    Result := (arrEd.Text = "0") or (arrEd.Text = "");
    if NOT Result then  Break;
  end;
end;


использование:

if TestEdit([Edit1, Edit2, Edit3]) then ...

В коде возможны синтаксические ошибки (и не только).
Идею проверки вроде правильно слизал у [1] TUser ©   (13.08.04 08:55), т.к. в авторском посте не понял что именно надо.


 
IceBeerg ©   (2004-08-13 12:21) [7]

А еще можно If Length(Edit1.Text)+Length(Edit2.Text)+Length(EditХ.Text)=0 Then ...


 
Алхимик ©   (2004-08-13 12:40) [8]


> [7] IceBeerg ©   (13.08.04 12:21)

У тебя на ноль ("0") не проверяется. А автор хочет.


 
Ega23 ©   (2004-08-13 12:58) [9]

Не парься с Edit! Используй SpinEdit!

Хреновый компонент-то...

По сабжу:

Если все Edit"ы на форме надо проверять на такое условие, то всё просто:

for i:=0 to ControlCount-1 do
if (Controls[i] is TEdit) then
  if (TEdit(Controls[i]).Text="") or
     (TEdit(Controls[i]).Text="0") then ....


Если не все, то в этот цикл добавиться строчка
if (TEdit(Controls[i]).Name= ....


 
GrayFace ©   (2004-08-15 13:20) [10]

Ega23 ©   (13.08.04 12:58) [9]
> Хреновый компонент-то...

Да.


 
Юрий Зотов ©   (2004-08-15 15:14) [11]

> CRACKISH   (13.08.04 08:52)

Можете оставить все как есть, только перед Вашим оператором if вставьте вот такую штучку:
{$B+}
а после него вот такую:
{$B-}
Потом сделайте Build (не Compile), и все заработает.



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

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.056 c
10-1033544642
mmb
2002-10-02 11:44
2004.08.29
Неужели мой вопрос настолько сложный, что никто даже не пытается?


14-1092325446
Antol
2004-08-12 19:44
2004.08.29
Ищу соратника для написания плагина.


1-1092138257
Pul
2004-08-10 15:44
2004.08.29
Invalid floating point operation


3-1091681441
ydv
2004-08-05 08:50
2004.08.29
Дублирование записей


1-1092073269
KOMbI4
2004-08-09 21:41
2004.08.29
Встроенный Ассемблер