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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.09.2015, 16:17   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию Не могу найти место не запрограммированного изменения TEdit

Доброе время суток форумчене,
Такая штука,
Есть код, который меняет в Edit.Text значение (в ходе работы программы присваивает другое значение). Но когда код отработал, значение в TEdit остается прежним.
Поясню:
При отработке кода (режим «step over»), я в «Watcher» наблюдаю изменения Edit.Text, которые мне нужны. Пробежался поиском по всему проекту, расставил точки прерывания на всех строках «Edit.Text :=». Но при отработке кода, уже после нужного изменения TEdit, я не на один расставленный breakpoint не попадаю. Но при этом, уже после полной (окончательной) отработки, текст в TEdit остается старым (т.е. каким был до изменения).
Если по логике текст «Edit.Text» где-то меняется на старый, но я не могу понять где?
Как бы мне определить это загадочное место изменения «Edit.Text»?

Заранее спасибо за ответ.

Последний раз редактировалось KBO; 16.09.2015 в 16:19.
KBO вне форума
Старый 16.09.2015, 16:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код глянуть покажешь?
I'm learning to live...
Stilet вне форума
Старый 16.09.2015, 16:57   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

код, да, надо посмотреть.
значение контрола ещё может меняться через обработчик события (через Sender)
через FindComponent и ещё множеством других "хитрых" способов.
Serge_Bliznykov вне форума
Старый 16.09.2015, 21:34   #4
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Вот код, который меняет значение в Edit (Он заменяет часть символов, на звездочки):
Код:
procedure TFMain.SHOW_SYMBOL(ALang: Language; ANumSymb: integer);
{show/hidden char in "edit" word}
var
  LString: string;
  LLength, LAdd: integer;
begin
  LString := '';
  case ALang of
    Eng:
        begin
          if ANumSymb >=0 then
          begin
            LLength := length(ibdsWord.FieldByName('EW1').AsString);
            LString := ibdsWord.FieldByName('EW1').AsString;
            Delete(LString, ANumSymb+1, 1000);
            edEngWord.Text := LString;
            for LLength := ANumSymb+1 to LLength do
              edEngWord.Text := edEngWord.Text + '*';

            if sbActivization.Down = true then
            begin
              if sbShow2charEng.Down then
                LAdd := 1;
              if sbShow3charEng.Down then
                LAdd := 2;
              if (sbShow2charEng.Down
                or sbShow3charEng.Down) then
                ExecQuery(Format(C_upd_add_total_repeat, [ibdsWord.FieldByName('TOTAL_REPEAT').AsInteger+LAdd,
                                                          ibdsWord.FieldByName('ID').AsInteger]), Exec_rec, 0);
            end;
            exit;
          end
          else
          begin
            Delete(LString, 0, 1000);
            edEngWord.Text := ibdsWord.FieldByName('EW1').AsString;
            exit;
          end;
          STATISTIC_WORDS;
        end;
    Rus:
        begin
        end;
  end;
end;
После последного End, в "Watch" Edit.Text отображается все как нужно

Последний раз редактировалось KBO; 16.09.2015 в 21:43.
KBO вне форума
Старый 16.09.2015, 21:43   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Этот кусок не говорит о том, где происходит смена.
Показывай полностью.
I'm learning to live...
Stilet вне форума
Старый 16.09.2015, 22:06   #6
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Этот кусок не говорит о том, где происходит смена.
Показывай полностью.
А строчки
Код:
edEngWord.Text := edEngWord.Text + '*';
тут я произвожу замену, какую я хочу,
другая замена происходит в

Код:
procedure TFMain.dbedEngWordChange(Sender: TObject);
begin
  edEngWord.Text := dbedEngWord.Text;
end;
ну это не о чем не говорит

больше я "звездочки" не где не присваиваю


полностью код я не могу выложить, он в 1997 строк (основной модуль)

Да, основное "эта штука перестает работать после нескольких раз правильной отработки", и продолжается до перезагрузки приложения

Последний раз редактировалось KBO; 16.09.2015 в 22:18.
KBO вне форума
Старый 16.09.2015, 22:33   #7
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Спасибо форумчане разобрался.
Оказывается, я при определенных действиях, программа делает
Код:
edEngWord.PasswordChar := '*';
и тоды делай с "edEngWord.Text" шо хош...

фух, и что основное полторы недели непроявлялось, "ЗАРАЗА" :-) не всегда пользуюсь этой штукой

Интересно, что,
то что даже если поставить breakpoint после строки
Код:
edEngWord.PasswordChar := '*';
"Watch" отображает строку всеравно как мне нужно (т.е. н-р: "edEngWord.Text 's*****'")

Последний раз редактировалось KBO; 16.09.2015 в 22:52.
KBO вне форума
Старый 17.09.2015, 06:30   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от KBO Посмотреть сообщение
Спасибо форумчане разобрался.
Оказывается, я при определенных действиях, программа делает
Парня этот код, явно - "достал" .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума
Старый 17.09.2015, 09:53   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
edEngWord.PasswordChar := '*';
Watch" отображает строку все равно как мне нужно
верно. свойство "PasswordChar" нужно, чтобы скрыть отображение (как при вводе пароля). А внутри хранится там всё как обычно.

Тему закрываем?
Serge_Bliznykov вне форума
Старый 17.09.2015, 13:39   #10
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Тему закрываем?
Да, конечно закрываем.
KBO вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как найти минимум и максимум при помощи процедуры,место функции _domenik_ Паскаль, Turbo Pascal, PascalABC.NET 1 25.02.2014 11:42
Двумерный массив. Найти среднее арифметическое каждой строки и поместить на место наибольшего (Паскаль) Золушка Паскаль, Turbo Pascal, PascalABC.NET 4 13.04.2011 13:33
Как найти TEdit на форме aesoem Win Api 4 20.08.2010 14:38
Найти место элемента, C# Gogent Помощь студентам 2 11.08.2010 22:05
TLoginDialog Как найти хендл TEdit-a Yuran Общие вопросы Delphi 2 23.06.2008 11:54