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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2012, 17:38   #1
sorockinalex
Пользователь
 
Регистрация: 10.10.2009
Сообщений: 22
По умолчанию Не выполняется код после вызова другой процедуры...

Есть одна форма в bpl пакете, открытая как Showmodal, в ней код передачи сообщения парент-форме, которая её вызывала:
Код:
procedure TFAddBranchCompany.AddButtonClick(Sender: TObject);
var
  txtmsg:string;
begin
...
  Self.Close;
  SendMessage(ParentHandle, MY_MESSAGE, 0, DWORD(PChar(txtmsg)));
end;
Парент-форма тоже является пакетом bpl и тоже была открыта как Showmodal из другой формы, в ней код приёма сообщения:
Код:
procedure TFBranchAndLocation.MessageReceiver(var msg: TMessage);
var
  txtmsg: PChar;
  InputPars:TStringList;
begin
  txtmsg := PChar(msg.lParam);
  msg.Result := 1;

  BranchNameEdit.Text:='12345';

  InputPars:=TStringList.Create();
  StrBreakApart(txtmsg, '<BR>', InputPars);

  BranchNameEdit.Text:='12345';

  try
    BranchNameEdit.Text:=InputPars[0];
    BranchCityEdit.Text:=InputPars[1];
  except
  end;
  InputPars.Free();
end;
Процедура преобразования строки в StringList расположена в пакете DataModule.bpl
Код:
procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings);
var
  CurPos: integer;
  CurStr: string;
begin
  Parts.clear;
  Parts.BeginUpdate();
  try
    CurStr := S;
    repeat
      CurPos := Pos(Delimeter, CurStr);
      if (CurPos > 0) then
      begin
        Parts.Add(Copy(CurStr, 1, Pred(CurPos)));
        CurStr := Copy(CurStr, CurPos + Length(Delimeter),
          Length(CurStr) - CurPos - Length(Delimeter) + 1);
      end
      else
        Parts.Add(CurStr);
    until CurPos = 0;
  finally
    Parts.EndUpdate();
  end;
end;
Смысл в том, что присвоение значения в поле на форме работает только до вызова этой процедуры. Строчка кода BranchNameEdit.Text:='12345' MessageReceiver, помеченная в коде красным, не выполняется. Почему так???

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

Цитата:
не выполняется.
Даже при трассировке?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.09.2012, 18:14   #3
sorockinalex
Пользователь
 
Регистрация: 10.10.2009
Сообщений: 22
По умолчанию

я даже не знаю как делать трассировку... подскажите пожалуйста!
то есть, как сказать, не выполняется, он выполняется, но полю ничего не присваивается почему-то...

трассировку попробую сделать, нашёл в яндексе...

Последний раз редактировалось sorockinalex; 09.09.2012 в 18:16.
sorockinalex вне форума Ответить с цитированием
Старый 09.09.2012, 18:24   #4
sorockinalex
Пользователь
 
Регистрация: 10.10.2009
Сообщений: 22
По умолчанию

не получается, делфи виснет, проект имеет около 8 модулей, все состоят из bpl... код, который не выполняется находится в одном из пакетов...

но я делал Showmessage до и после процедуры StrBreakApart - showmessags появляется и до и после... А вот именно поле после процедуры становится недоступным, или в памяти что-то...

Последний раз редактировалось sorockinalex; 09.09.2012 в 18:30.
sorockinalex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphy. После вызова модального окна циклится DateTimePicker. Не могу понять почему Kompressor Помощь студентам 3 10.10.2011 08:38
Порядок вызова процедуры artem611 Помощь студентам 3 11.05.2011 18:28
Использование имени процедуры в качестве параметра другой процедуры Alexey355 Помощь студентам 1 23.04.2011 13:59
закончить выполнение процедуры из тела другой процедуры Alaysor Общие вопросы Delphi 14 23.01.2011 05:26
Ошибка вызова одной процедуры в другой! $T@LKER БД в Delphi 4 28.04.2010 19:50