Главная страница
    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.032 c
1-1092267094
mvgfirst
2004-08-12 03:31
2004.08.29
Нужно написать программу сервер используюя SOAP с чего начать?


1-1091885550
appendix
2004-08-07 17:32
2004.08.29
числа с плавающей точкой


3-1091942734
jjjjjj
2004-08-08 09:25
2004.08.29
Как сделать одно поле DBF-файла уникальным


10-1033103025
KA_
2002-09-27 09:03
2004.08.29
CORBA-сервер "жрет" память


14-1091809121
Мазут Береговой
2004-08-06 20:18
2004.08.29
Еще одна композиция для 2-х гитар и флейты.





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