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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2020, 11:21   #1
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию Событие по изменению Edit.Text, в том случае если значение отличается от бывшего там ранее текста

Здравствуйте, хочу сделать чтобы выполнялась определённая процедура при изменении значения Edit.Text, но только в том случае если значение отличается от бывшего там ранее текста, пробую так:
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  ip1 := Edit1.Text;
  if (ip2 <> ip1) and (Edit1.Text <> ' ') then MyProcedure;
  ip2 := ip1;
end;
Не получается, MyProcedure выполняется при каждом обновлении Edit1.Text даже если его значение обновилось на тоже, что и было ранее. Помогите пожалуйста.

Последний раз редактировалось Alex711; 14.07.2020 в 11:23.
Alex711 вне форума Ответить с цитированием
Старый 14.07.2020, 12:10   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Сообщение от Alex711 Посмотреть сообщение
даже если его значение обновилось на тоже, что и было ранее.
откуда вы это знаете не вижу даже закомментированных
showmessage для откладки
Код:
if (ip2 <> ip1) and (Edit1.Text <> ' ')
слишком сложная констрункция для того кто не понимает что происходит в его программе

можете использовать
Код:
if ip2 = ip1 then
if Edit1.Text = ' ' then
?
Alar вне форума Ответить с цитированием
Старый 14.07.2020, 15:01   #3
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Даже если тоже самое вешаю на Timer:
Код:
 ip1 := Edit1.Text;
  if ip2 <> ip1 then MyProcedure;
  ip2 := ip1;
всё равно MyProcedure выполняется, пытался выводить ip1 и ip2 в Edit'ы для наглядности, они имеют одинаковые значения, но условие всё равно выполняется, почему?
Alex711 вне форума Ответить с цитированием
Старый 14.07.2020, 16:41   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

delphi сравнение текста
http://delphibasics.ru/AnsiCompareStr.php
Alar вне форума Ответить с цитированием
Старый 14.07.2020, 16:48   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
пытался выводить ip1 и ip2 в Edit'ы для наглядности,
пробелы в этой "наглядности" не видны.
А они наверняка есть! и их разное количество.
вот строки и не равны.

пробел это такой же равноправный символ строки и он участвует в сравнениях строк.
Код:
a:='раз два'; //здесь один пробел
b:='раз  два'; // а здесь два пробела
r:=(a=b);   r=FALSE !!!
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 14.07.2020 в 16:55.
evg_m на форуме Ответить с цитированием
Старый 14.07.2020, 20:42   #6
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Разобрался, проблема была в другом, программа перезапускалась при определённых условиях и естественно переменная ip2 обнулялась, сделал запись переменной в базу данных с которой и так взаимодействует данная программа и всё наладилось. Всем спасибо огромное за помощь!
Alex711 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для любого числа Х рассчитать QW=100*X, если Х > 0, в противном случае найти CM=x/100. SeeYoo Общие вопросы Delphi 3 27.03.2020 15:23
Webbrowser (событие по изменению кода html) Fahman Общие вопросы Delphi 16 17.08.2014 20:07
VBA Составить программу, печатающую значение true, если указанное высказывание является истинным, и false в противном случае: Stinray Помощь студентам 0 23.05.2013 18:39
заполнение edit ,ранее созданных динамически Игорь Кулакевич Помощь студентам 10 31.10.2011 12:15
Вставка строки в том случае, если такой нету Mixasik SQL, базы данных 3 11.04.2010 19:00