Главная страница
    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.036 c
4-1094995095
ANB
2004-09-12 17:18
2004.10.17
Стандартные хэндлы ввода вывода для CreateProcess


14-1096111996
MGWarlock
2004-09-25 15:33
2004.10.17
Рисование блоксхем


14-1096438928
Holy
2004-09-29 10:22
2004.10.17
И как вам?


3-1095752054
Rule
2004-09-21 11:34
2004.10.17
Непонятное суммирование в IB в storedprocedure


3-1095403065
PhAn
2004-09-17 10:37
2004.10.17
Глюк like или Access?





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