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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
6-1088540567
S-Viper
2004-06-30 00:22
2004.08.29
локальные сети, IP...


9-1084036236
Rule
2004-05-08 21:10
2004.08.29
Помогите найти движок для некомерческого использования !!!


1-1092197326
dream
2004-08-11 08:08
2004.08.29
Как определить что сервис зарегестрирован ?


3-1091688423
Frozzen
2004-08-05 10:47
2004.08.29
Как востановить работоспособнось проги под ИБ5


4-1089782321
vosogop
2004-07-14 09:18
2004.08.29
Состояние монитора





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский