powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как с помощью Post-сообщений заставить программу отображать надписи.
50 сообщений из 50, показаны все 2 страниц
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534389
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При нажатии кнопки должен выполняться следующий код (отображение информационной надписи),
Код: pascal
1.
2.
  PageControl1.ActivePageIndex := 0;
  LabelWait.Visible := true;


а затем довольно долгая (несколько секунд) процедура архивации. Во время архивации LabelWait должна отображать надпись "ПОДОЖДИТЕ..."
Так вот, при нажатии кнопки надпись не отображается, вместо этого кнопка зависает в нажатом состоянии до тех пор, пока процедура архивации не закончится, и потом отмораживается, и только после этого появляется надпись "Подождите..." на миг, после чего, естественно вызывается оператор спрятать эту надпись и отобразить "Готово!"

Пытался выйти из положения следующим способом:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
const
  WM_CREATE_ARCHIVE_SHOW = WM_USER + 1;

type
  TfmMain = class(TForm)
...
  private
    procedure CreateArchiveShow(var Msg: TMessage); message WM_CREATE_ARCHIVE_SHOW;
...
  end;

...

procedure TfmMain.CreateArchiveShow(var Msg: TMessage);
begin
  PageControl1.ActivePageIndex := 0;
  LabelWait.Visible := true;
end;

procedure TfmMain.btnSeqCreateArchiveClick(Sender: TObject);
begin
  PostMessage(fmMain.Handle, WM_CREATE_ARCHIVE_SHOW, 0, 0);
  
  // Создание архива
  .......
  .....
  .....
end;


Однако это не помогло. Кнопка по-прежнему зависает до окончания архивации, и никакая надпись не появляется до окончания.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534391
_Navy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svnvlad,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure TfmMain.btnSeqCreateArchiveClick(Sender: TObject);
begin
  PostMessage(fmMain.Handle, WM_CREATE_ARCHIVE_SHOW, 0, 0);
  
  Application.ProcessMessages; // Welcome to hell! :(

  // Создание архива
  .......
end;

Такие вещи (длительную обработку чего-либо) обычно выносят в отдельный тред. То есть как-то так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TfmMain.btnSeqCreateArchiveClick(Sender: TObject);
begin
  PageControl1.ActivePageIndex := 0;
  LabelWait.Visible := true;
  
  RunArchiveThread;  // Создание архива
  .......
end;
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534410
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Navy_
Код: pascal
1.
Application.ProcessMessages; 

не очень-то безопасен
сможет обработать нажатие клавиш или мышки
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534414
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и сразу - из доп. потоков нельзя без синхронизации обращаться к большинству визуальных компонент VCL.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534415
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladОднако это не помогло. Кнопка по-прежнему зависает до окончания архивации, и никакая надпись не появляется до окончания.
Попробуй https://github.com/wadman/wthread/ :)
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534427
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//Так вот, при нажатии кнопки надпись не отображается

А что должна ? :)

И где после LabelWait.Visible := true
LabelWait.Refresh ?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534429
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladКнопка по-прежнему зависает до окончания архивации, и никакая надпись не появляется до окончания.
абсолютно предсказуемое поведение. Как советовали выше, только архивация в доп.потоке с перерисовкой надписи в основном потоке спасет ситуацию. У wadman 'а даже готовый прекрасный компонент есть
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534444
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Код: pascal
1.
2.
PageControl1.ActivePageIndex := 0;
  LabelWait.Visible := true;


При чем тут PostMessage - не понятно.
Код: pascal
1.
2.
3.
PageControl1.ActivePageIndex := 0;
  LabelWait.Visible := true;
  LabelWait.Update;
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534484
_Navy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRockПри чем тут PostMessage - не понятно.
Оно нафик не надо, но отработает, лабель покажет. Но таки да, перректально.

LSVИ где после LabelWait.Visible := true
LabelWait.Refresh ?YuRock
Код: pascal
1.
2.
  ...
  LabelWait.Update;

При вынесении архивации в доп. поток не нужно ни то, ни другое.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534488
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Navy_При вынесении архивации в доп. поток не нужно ни то, ни другоеТС ни слова не спрашивал про потоки (может они и не подпрыгнули в этой задаче), а его засыпали, как обычно.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534496
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильный подход ессно пустить поток и задизаблить кнопку
при возврате поток ее отменит обратно.
если нужен прогресс, то (самое простое решение) передаем в поток ссылку на прогресс-бар и дергаем ее желательно не очень часто через Synchronize
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534508
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkinчерез SynchronizeВот тут уж тогда лучше через PostMessage. Зачем к кривой технологии приучать, чтобы потом грабли разгребать и в итоге уходить от Synchronize.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534541
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkinесли нужен прогресс, то (самое простое решение) передаем в поток ссылку на прогресс-бар и дергаем ее желательно не очень часто через Synchronizeдля прогресса StaticQueue может оказаться главнее
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534599
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЗачем к кривой технологии приучать, чтобы потом грабли разгребать и в итоге уходить от Synchronize.А зачем приучать к велосипедостроению, вместо того, чтобы использовать специально предоставленный механизм?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534646
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerYuRockЗачем к кривой технологии приучать, чтобы потом грабли разгребать и в итоге уходить от Synchronize.А зачем приучать к велосипедостроению, вместо того, чтобы использовать специально предоставленный механизм?Т.к. этот специальный механизм не всегда работоспособен, не говоря уже о его тормознутости и ограниченности. Обсуждалось уже много раз, снова не хочется.

Про какие велосипеды ты говоришь - не совсем понятно только. Работа с окнами идет через сообщения, посылаемые ф-циями Send/PostMessage.
Синхронизация между потоками достигается логикой архитектуры программы и, если надо, объектами синхронизации. Всё, точка. Никак не кривыми костылями.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534653
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerYuRockЗачем к кривой технологии приучать, чтобы потом грабли разгребать и в итоге уходить от Synchronize.А зачем приучать к велосипедостроению, вместо того, чтобы использовать специально предоставленный механизм?
О каком специально предоставленном механизме идет речь? Synchronize или PostMessage?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534669
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanО каком специально предоставленном механизме идет речь? Synchronize или PostMessage?Про Queue. Быстро и кросплатформенно.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534679
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock.к. этот специальный механизм не всегда работоспособен, не говоря уже о его тормознутости и ограниченности. Обсуждалось уже много раз, снова не хочется.
Про какие велосипеды ты говоришь - не совсем понятно только. Работа с окнами идет через сообщения, посылаемые ф-циями Send/PostMessage.
Синхронизация между потоками достигается логикой архитектуры программы и, если надо, объектами синхронизации. Всё, точка. Никак не кривыми костылями.Если ты не умеешь готовить кошек - это не значит что они невкусные. Подтяни матчасть по TThread, там не только Synchronize.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534684
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А уж обновить Label - тут ТС и Synchronize за глаза хватило бы
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534687
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помнится до 6-й версии Synchronize как раз юзал sendmessage но с той поры благополучно отказался
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534700
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanпомнится до 6-й версии Synchronize как раз юзал sendmessage но с той поры благополучно отказалсяЯ уже не помню таких подробностей
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534704
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> помнится до 6-й версии Synchronize как раз юзал sendmessage но с той поры благополучно отказался

подтверждаю.
в 5-ке:
[src=delphi]procedure TThread.Synchronize(Method: TThreadMethod);
begin
FSynchronizeException := nil;
FMethod := Method;
SendMessage(ThreadWindow, CM_EXECPROC, 0, Longint(Self));
if Assigned(FSynchronizeException) then raise FSynchronizeException;
end;[/src]

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534791
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
История такова: у меня была одна программа, использующая асинхронные сокеты, и в ней я благополучно решал проблему с помощью PostMessage. Сейчас уже не помню почему, но помню, что читал, что вместо Thread-ов и Synchronize рекомендовалось там как раз использовать PostMessage. Может быть неправильно понял, и от Thread-ов не надо отказываться.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534821
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladИстория такова: у меня была одна программа, использующая асинхронные сокеты, и в ней я благополучно решал проблему с помощью PostMessage. Сейчас уже не помню почему, но помню, что читал, что вместо Thread-ов и Synchronize рекомендовалось там как раз использовать PostMessage. Может быть неправильно понял, и от Thread-ов не надо отказываться.В каждом случае нужно смотреть, что использовать. Создание thread-ов относительно небыстрая задача для оси. Быстрее будет использование системного пула потоков (а-ля QueueUserWorkItem и иже с ними). Я это использовал в наших продуктах для сортировки и фильтрации. Причем перформанс заметен даже на относительно небольших данных. Если бы делал через TThread - то поднятие и инициализации съели бы немало полезного времени
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534845
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerБыстрее будет использование системного пула потоков (а-ля QueueUserWorkItem и иже с ними).

А пример не покажете, что за системный пул потоков и как с ним работать?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534850
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad, та можно и не системный если действительно пул нужен. нарукоблудить или лучше спионерить где готовый
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534860
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladА пример не покажете, что за системный пул потоков и как с ним работать?Лучше всего для понимания начать отсюда Также можно найти в инете использование на делфи. Ну и если есть наши сырцы, можешь глянуть dxThreading.pas - правда лучше актуальный. Раньше была ошибка, на 40-ядерном процессоре отваливалось - мой косяк был
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534875
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerна 40 -ядерном процессорефигасебе
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534905
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвейдфигасебеУвы. На 32-ядерном всё работало
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534927
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerYuRock.к. этот специальный механизм не всегда работоспособен, не говоря уже о его тормознутости и ограниченности. Обсуждалось уже много раз, снова не хочется.
Про какие велосипеды ты говоришь - не совсем понятно только. Работа с окнами идет через сообщения, посылаемые ф-циями Send/PostMessage.
Синхронизация между потоками достигается логикой архитектуры программы и, если надо, объектами синхронизации. Всё, точка. Никак не кривыми костылями.Если ты не умеешь готовить кошек - это не значит что они невкусные. Подтяни матчасть по TThread, там не только Synchronize.
А ты подтяни не знаю, что, и скажи, что будет, когда потоки, созданные тобою, вызовут Synchronize, а в основном потоке в это время

1. Не был вызван Application.Run
2. При обработке какого-то сообщения через цикл из Application.Run (например в Button1Click) был создан еще один цикл обработки сообщений, например, GetMessage, WaitMessage или MsgWaitForMultiplyObjects+PeekMessage и крутится себе, всё обрабатывает, закончится тогда-то и тогда-то, когда нужно будет.

И если твой ответ будет правильным, то он будет таков: "Они все намертво повиснут в лучшем случае до того момента, пока что-то не случится, при чем это что-то никоим образом не относится к синхронизации данных, доступ к которым ты пытаешься синхронизировать".

Хочешь разгребать подобные проблемы? Вперед.

Это первое. Второе.
Метод синхронизации данных через очередь (хотя в данном случае это не через очередь, Synchronize - это глючный костыль к очереди, вот Send/PostMessage - это через очередь) нужен тогда, когда он нужен. И больше никогда.
Синхронизировать данные всегда через очередь - мега-убогий способ, т.к. все ждут каждого, даже если это не требуется. А через очередь главного потока - супер-мега-убогий, ибо все ждут еще и окончания обработки в потоке очереди и других сообщений, не требующих вообще никакой синхронизации, а она может занимать, скажем мягко, некоторое время.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534940
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,
Поток сознания какой-то, всё в кучу сгрёб...

PS: Можно и детородный орган сломать если не понимаешь что делаешь
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534941
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockчто будет, когда потоки, созданные тобою, вызовут Synchronize, а в основном потоке в это время

1. Не был вызван Application.Run
2. При обработке какого-то сообщения через цикл из Application.Run (например в Button1Click) был создан еще один цикл обработки сообщений, например, GetMessage, WaitMessage или MsgWaitForMultiplyObjects+PeekMessage и крутится себе, всё обрабатывает, закончится тогда-то и тогда-то, когда нужно будет.


Ну не все же без VCL пишут, верно ?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534949
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiYuRockчто будет, когда потоки, созданные тобою, вызовут Synchronize, а в основном потоке в это время

1. Не был вызван Application.Run
2. При обработке какого-то сообщения через цикл из Application.Run (например в Button1Click) был создан еще один цикл обработки сообщений, например, GetMessage, WaitMessage или MsgWaitForMultiplyObjects+PeekMessage и крутится себе, всё обрабатывает, закончится тогда-то и тогда-то, когда нужно будет.


Ну не все же без VCL пишут, верно ?
Вторая ситуация - как раз для VCL. Одна из изюминок VCL, в которой еще и окно модальное закрыть невозможно по похожим причинам в данном случае.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534950
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerПоток сознания какой-то, всё в кучу сгрёб...
Понятно. К счастью, я не пользуюсь твоими библиотеками.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534954
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockПонятно. К счастью, я не пользуюсь твоими библиотеками.Как дальше жить? Можно распускать DevExpress...
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534955
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerPS: Можно и детородный орган сломать если не понимаешь что делаешь
Похоже, ты не понимаешь, что делаешь, раз пользуешься таким. (если не пользуешься - зачем советовать другим тогда - вредительство одно)
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534956
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockschiпропущено...


Ну не все же без VCL пишут, верно ?
Вторая ситуация - как раз для VCL. Одна из изюминок VCL, в которой еще и окно модальное закрыть невозможно по похожим причинам в данном случае.

Если я тебя правильно понял, то во время отображения модального окна в основном попытка вызвать из другого потока Synchronize приведет к невозможности закрыть модальное окно ?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534957
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модальность в VCL изначально кривая и самописная.
почему вместо Win нужно было городить свой огород,
тайна покрытая мраком...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534962
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi,

В этом случае нет, потому-что цикл, запускаемый при показе VCL-ного модального окна, обрабатывает Idle, который вызывает Synchronize.
Но никто не застрахован от не-VCL-ных циклов обработки сообщений.

Я о другом говорил. Если есть открытое модальное окно (VCL-ное), и при этом запустить свой цикл GetMessage/WaitMessage/MsgWaitForMultiplyObjects, то закрыть это окно будет невозможно (оно закроется только при окончании этого цикла).
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534966
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi,

А, кстати, если вызвать VCL-ное модальное окно из dll (наверно даже из bpl), то тогда тоже никакие Synchronize не выполнятся. Будут висеть, пока не закроется модальное окно)) Т.к. список Synchronize-функций для выполнения в оконной процедуре в dll пустой))
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534967
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЕсли есть открытое модальное окно (VCL-ное), и при этом запустить свой цикл GetMessage/WaitMessage/MsgWaitForMultiplyObjects, то закрыть это окно будет невозможно (оно закроется только при окончании этого цикла).

Как бы модальное оно на то и модальное, чтобы своих циклов не запускать. Но причем тут Лужков Syncronize ? :)
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534972
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockschi,

А, кстати, если вызвать VCL-ное модальное окно из dll (наверно даже из bpl), то тогда тоже никакие Synchronize не выполнятся. Будут висеть, пока не закроется модальное окно)) Т.к. список Synchronize-функций для выполнения в оконной процедуре в dll пустой))

Из BPL вряд ли. А с DLL довольно много хитростей и без межмодульных вызовов, потому что глобальные переменные начинают размножаться.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534976
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiКак бы модальное оно на то и модальное, чтобы своих циклов не запускать.
Он может быть запущен в любом месте программы, при любом событии. Главное - чтоб из цикла, запущенного при открытии этого "модального" окна (а так и будет, когда оно открыто и является верхним).
schiНо причем тут Лужков Syncronize ? :)
Похожая проблема. А еще 20861970
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534979
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiИз BPL вряд ли. А с DLL довольно много хитростей и без межмодульных вызовов, потому что глобальные переменные начинают размножаться.
Про bpl я не утверждаю - не знаю, как там всё работает.
А в dll я хитростей не вижу. Глобальные переменные те же. Ну, некоторые разные, конечно, типа Application.MainForm, но я ж не пользуюсь таким)
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535043
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockА в dll я хитростей не вижу. Глобальные переменные те же. Ну, некоторые разные, конечно, типа Application.MainForm, но я ж не пользуюсь таким) Разные они, разные...
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535049
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerРазные они, разные...
Их значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535061
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockИх значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.Крут! А а не в курсе, что у кучи народа масса проблем с этим, особенно в части VCL?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535062
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockwhite_niggerРазные они, разные...
Их значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.

Не значения разные, а сами они разные. Например, эта в classes.pas в dll отличается от одноименной в classes.pas exe :

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
{ SyncEvent is an Event handle that is signaled every time a thread wishes to
  synchronize with the main thread or is terminating.  This handle us suitable
  for use with WaitForMultipleObjects.  When this object is signaled,
  CheckSynchronize *must* be called in order to reset the event.  Do not call
  ResetEvent on this handle, or background threads may hang waiting for
  Synchronize to return.
}
  SyncEvent: THandle;
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535095
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi, ну понятно, что полностью одинаковые у них только названия)
Но и значения у многих тоже. Например, CurrencyStr, версия ОС и т.д.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535096
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerYuRockИх значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.Крут! А а не в курсе, что у кучи народа масса проблем с этим, особенно в части VCL?Откуда же мне это знать.
У кучи людей и с Synchronize проблем масса, и вообще с VCL, да и вообще с компьютерами.
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как с помощью Post-сообщений заставить программу отображать надписи.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]