1

Тема: Конструкція if then у Delphi

Підкажіть будь ласка, як задати умову в конструкції if then: якщо в Edit є текст

Пробував два варіанти і обидва не правильні

if Edit1.Text<>'' then
if Edit1.Text='' then

За допомогу буду дуже вдячний.

2

Re: Конструкція if then у Delphi

Один з ваших варіантів правильний. Поясніть, чому ви вважаєте обидва неправильними - проблема не в тому коді, що ви виклали, а в іншому або у вашому сприйнятті.

Подякували: Romanvolja1

3

Re: Конструкція if then у Delphi

Процедура в мене така:

procedure TAddClassis_Fr.Add_SBtClick(Sender: TObject);
begin
if ToEdit_Ed.Text<>'' then
degin
  Classis_ADOTb.Insert;
  Classis_ADOTb.FieldByName('Classis').AsString:=ToEdit_Ed.Text;
  Classis_ADOTb.Post;
end
else
  ShowMessage('Ви не заповнили поле.');
end;
end;

В одному варіанті в мене виводилося повідомлення коли едіт був заповнений, а в другому коли пустий.
Але проблема в тому що в обох випадках дані в базу не заносилися.

Я думав використати цей код, щоби в підлеглій таблиці не створювалися пусті комірки пи випадковому натиснені на кнопку Add_SBt.

Без конструкції дані заносяться без проблем


  Classis_ADOTb.Insert;
  Classis_ADOTb.FieldByName('Classis').AsString:=ToEdit_Ed.Text;
  Classis_ADOTb.Post;

Хто підкаже де я зробив помилку буду вдячний.

4

Re: Конструкція if then у Delphi

Romanvolja написав:

В одному варіанті в мене виводилося повідомлення коли едіт був заповнений, а в другому коли пустий.

Тобто if-then-else і порівняння працювали, як слід.

Romanvolja написав:

Без конструкції дані заносяться без проблем

А ось це вже цікаво. Поки що припущу, що ви змінили щось в решті програми або тестували в різних умовах (скажімо, без if-then-else ви спробували один раз і все, а з ним - клацали ще якісь пункти, які змінювали Classis_ADOTb); або ж ви десь наплутали і тестували не той код, на кшталт

Classis_ADOTd.FieldByName('Classis').AsString:=ToEdit_Ed.Text;

як у випадку з degin в рядку 4. if-then-else працює і саме так, як ви очікуєте - перевіряє умову і виконує тільки одну гілку.

Подякували: Torbins, Romanvolja2

5

Re: Конструкція if then у Delphi

мені одному здалось що це неправильно?

degin
Навчаюсь вчитись, щоб навчатись.
Подякували: leofun01, ADR, /KIT\, Romanvolja4

6

Re: Конструкція if then у Delphi

Q-bart написав:

мені одному здалось що це неправильно?

degin

А ще begin'ів (разом з degin'ом) менше, ніж end'ів. По ідеї, мало б лайнутись і не скомпілитись... Коротше, давайте увесь код юніта.

py -3 -m pip install git+https://github.com/snoack/python-goto
Подякували: Torbins, Romanvolja2

7

Re: Конструкція if then у Delphi

Romanvolja
Помилка десь в іншому місці.

Подякували: Romanvolja1

8

Re: Конструкція if then у Delphi

скористайтесь дебагером

Подякували: Torbins, Romanvolja2

9

Re: Конструкція if then у Delphi

Дякую всім за допомогу.

Помилку знайшов. Насправді дані зберігалися в БД, але не відображалися в таблиці та гріді.
Вирішив проблему через активацію.

procedure TAddClassis_Fr.Add_SBtClick(Sender: TObject);
begin
  if (ToEdit_Ed.Text<>'') then
    begin
      with Classis_ADOTb do
        begin
          Insert;
          FieldByName('Classis').AsString:=ToEdit_Ed.Text;
          Post;
          Active:=False;
          Active:=True;
        end;
      NS_Or_Classis_ADOTb.Active:=False;
      NS_Or_Classis_ADOTb.Active:=True;
    end
  else
    begin
      ShowMessage('Ви не заповнили поле.');
    end;
  ToEdit_Ed.Clear;
end;

Тепер все працює як треба.

На рахунок begin ви праві, я його пропустив. В конструкції він повинен стояти після  else.

10 Востаннє редагувалося Betterthanyou (09.10.2016 04:15:59)

Re: Конструкція if then у Delphi

Прихований текст

Romanvolja написав:

Насправді дані зберігалися в БД, але не відображалися в таблиці та гріді.
Вирішив проблему через активацію.

То чого б не відкривати БД через СУБД для перевірки чи туди щось пишеться

...хоча скорій всього ви так і зробили раз виявили цю помилку

Подякували: Romanvolja1

11 Востаннє редагувалося rainboww1988 (14.10.2016 15:35:13)

Re: Конструкція if then у Delphi

НУ ось, наприклад, використання конструкції if else при вводі данних логіну та паролю
01 procedure TForm1.Button1Click(Sender: TObject);
02 begin
03 if Edit1.Text = 'admin' then //Если логин верный, то...
04 begin
05 Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя
06 end
07 else //Иначе
08 begin
09 Label3.Caption:='Логин не верный!'; //Выдаем ошибку
10 end;
11 end;

12

Re: Конструкція if then у Delphi

Доброго вечора.

Підкажіть як правильно записати умову в конструкції:- "Якщо таблиця знаходитьсяв режимі редагування(Edit) ,або в режимі додавання(Insert) даних "

Пробував так:

  if ModulC_DMd.Garden_ADOTb.Edit or ModulC_DMd.Garden_ADOTb.Insert then
    begin
...
      ModulC_DMd.Garden_ADOTb.FieldByName('Orchard_ID').AsInteger:=StrToInt(RiderBase_Fr.ID_Ed.Text);
      ModulC_DMd.Garden_ADOTb.Post;
    end;

Але тут є помилка, бо некомпілюється.

13

Re: Конструкція if then у Delphi

Edit і Insert - це процедури, тобто дії. Вони не повертають ніяких значень, які можна було б із чимось порівняти. Поточний стан записаний в поле State. Перевірити одразу два можливих значення можна приблизно так:

If DataModule1.AdoTable1.State in [dsEdit, dsInsert] then 
//...