Главная страница
    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.038 c
3-1095819073
Medik
2004-09-22 06:11
2004.10.17
Удаление в Stringgrid


3-1095754396
kj
2004-09-21 12:13
2004.10.17
Запрос в InterBase


8-1089642570
ИМХО
2004-07-12 18:29
2004.10.17
PCL


1-1096917443
lipskiy
2004-10-04 23:17
2004.10.17
Как предотвратить "замерзание" проигрывания авишки в TAnimate


14-1096028444
ssk
2004-09-24 16:20
2004.10.17
Классная ветка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский