Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

Почему повисает MIDAS-сервер при попытке сделать такое:   Найти похожие ветки 

 
Aleksandr ©   (2003-04-11 19:37) [0]

На RemoteDataModuleCreate пишу:
begin
 MainForm.IncConnectCount
end;

procedure MainForm.IncConnectCount;
begin
 FCCount:=FCCount+1;
 MainForm.StatusBar.Panels[0].Text:=IntToStr(FCCount)
end;

И все. На этом форма умирает (при этом кнопочка "закрыть" в Caption остается доступна и закрывает программу при нажатии). То же происходит, если попытаться какой нибудь Label.Caption присвоить string из того же метода... Какие-то тут условности есть?


 
Набережных С.   (2003-04-13 09:34) [1]

Если потоковая модель <> Single:

procedure MainForm.IncConnectCount;
begin
 InterlockedIncrement(FCCount);
 PostMessage(Handle, UM_RefreshStatus, 0, 0);
end;

procedure MainForm.UMRefreshStatus(var Message: TMessage);
begin
 MainForm.StatusBar.Panels[0].Text:=IntToStr(FCCount)
end;


 
Aleksandr ©   (2003-04-14 12:24) [2]

Спасибо! А что делать в случае со строковыми переменными?


 
ErikIvanov   (2003-04-14 12:39) [3]

Например так.
procedure SendStatus(const Value: String);
Var Str: PChar;
begin
Str := StrNew(PChar(Value));
PostMessage(Application.Handle,msgChangeMessage,0,Integer(Str));
end;

procedure ReciveStatus(Var Value: String; Msg: TMessage);
var Str: PChar;
begin
Str := PChar(Msg.lParam);
Value := Str;
StrDispose(Str);
end;
Или записать в переменую и спокойно в UMRefreshStatus считать. Если хочется очень коректно то можно с TCriticalSection


 
Aleksandr ©   (2003-04-14 14:06) [4]

Спасибо. Только опять мне глупому, немного неясно - а почему через PChar все должно быть? Чем строка не плоха?


 
Набережных С.   (2003-04-14 18:28) [5]

>Aleksandr ©   (14.04.03 14:06)

Для AnsiString поддерживается механизм подсчета ссылок. Как только счетчик обнуляется, строка освобождается. Т.е. строка "умрет" при выходе из SendStatus и в момент получения сообщения на ее месте в памяти могут быть совсем другие данные.
 На всякий случай попутно предупрежу, что в конструкторе RemoteDataModule для связи с главным потоком нельзя использовать синхронные механизмы из-за применения семафора в методе TComponentFactory.CreateInstance, можно только асинхронные.



Страницы: 1 вся ветка

Форум: "Corba";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.033 c
3-1095619050
Dio
2004-09-19 22:37
2004.10.17
Компанент


4-1095007004
DeepProg
2004-09-12 20:36
2004.10.17
Перехват нажатия несиситемной кнопки на чужой форме


1-1097017042
Kirilllius
2004-10-06 02:57
2004.10.17
TreeView


14-1096005299
MBo
2004-09-24 09:54
2004.10.17
Пятничные задачки. И простые и сложные...


1-1096362059
VasyaPupkin
2004-09-28 13:00
2004.10.17
DelphiX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский