Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2016, 21:43   #1
Almaz92
Пользователь
 
Регистрация: 12.03.2016
Сообщений: 17
По умолчанию Почему я не могу заставить одно из условий работать?

if IdSMTP1.Connected then Memo1.Text:=('Есть соединение');
Это работает нормально без проблем!




if IdSMTP1.Disconnect then Memo1.Text:=('Нет соединения');
А это выдаёт ошибку! Как сделать правильно, что-бы оно действовало?
Нужно прямо противоположное первому условию!



if IdSMTP1.Connected then Memo1.Text:=('yyyyyyyyy') else Memo1.Text:=('aaaaaaaaa');
Так тоже срабатывает только IF, а else не работает

Последний раз редактировалось Almaz92; 14.03.2016 в 22:07.
Almaz92 вне форума Ответить с цитированием
Старый 14.03.2016, 22:21   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

if not IdSMTP1.Connected then Memo1.Text:=('Нет соединения');
а вообще непонятно когда и где вызываете и чего за ошибки выдаёт, если выдаёт
pu4koff вне форума Ответить с цитированием
Старый 14.03.2016, 22:29   #3
Almaz92
Пользователь
 
Регистрация: 12.03.2016
Сообщений: 17
По умолчанию

if not IdSMTP1.Connected then Memo1.Text:=('Нет соединения');
пробовал, тоже не хочет делать !

Коннект обрабатывается, а дисконнект ни в какую!
Almaz92 вне форума Ответить с цитированием
Старый 14.03.2016, 22:33   #4
vlad1389
Форумчанин
 
Регистрация: 02.02.2016
Сообщений: 290
По умолчанию

Цитата:
if IdSMTP1.Connected then Memo1.Text:=('yyyyyyyyy') else Memo1.Text:=('aaaaaaaaa');
Так тоже срабатывает только IF, а else не работает
А если без интернета код запустить? IdSMTP1.Connected это не просто буллеон. Это функция, выполняющая код. Если соединение проходит успешно, ветка else никогда не отработает.
Цитата:
if IdSMTP1.Disconnect then Memo1.Text:=('Нет соединения');
А это выдаёт ошибку!
Так как это процедура. А процедуры ничего не возвращают. Подучи теорию. Не отличаешь функцию от процедуры. И кстати у ошибки есть текст. Если его читать, всё становится намного проще.
vlad1389 вне форума Ответить с цитированием
Старый 14.03.2016, 22:39   #5
Almaz92
Пользователь
 
Регистрация: 12.03.2016
Сообщений: 17
По умолчанию

Спасибо за разъяснение, теперь я понял почему это условие не выполнимо!
Almaz92 вне форума Ответить с цитированием
Старый 15.03.2016, 00:05   #6
Almaz92
Пользователь
 
Регистрация: 12.03.2016
Сообщений: 17
По умолчанию

А как можно реализовать это посредством таймера?
Если есть соединение к хосту то действие 1 например button1.click;
Если нет соединения то действие 2 например button2.click;
Almaz92 вне форума Ответить с цитированием
Старый 15.03.2016, 01:00   #7
vlad1389
Форумчанин
 
Регистрация: 02.02.2016
Сообщений: 290
По умолчанию

У данного компонента есть обработчик события OnStatus. Соответственно таймер не нужен.
Код:
procedure TForm1.IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: string);
begin

end;

  TIdStatus = ( hsResolving,
                hsConnecting,
                hsConnected,
                hsDisconnecting,
                hsDisconnected,
                hsStatusText,
                ftpTransfer,  // These are to eliminate the TIdFTPStatus and the
                ftpReady,     // coresponding event
                ftpAborted);

Последний раз редактировалось vlad1389; 15.03.2016 в 01:12.
vlad1389 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заставить работать str_replace Тандер PHP 1 04.04.2014 18:55
Не могу заставить программу работать Sinthen Помощь студентам 1 25.05.2012 04:55
Не могу заставить работать атрибут HandleError iehf ASP.NET 0 30.08.2011 21:47
Заставить работать принтер Gigabit Общие вопросы Delphi 11 03.02.2010 16:59
Cходящийся ряд (программа по идее должна работать но почему не работает понять не могу) в С++ Vultar Помощь студентам 3 17.12.2009 13:04