Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
ВнизПомогите !!!!! В процедуре Execute не работает Memo1.Lines.Add() Найти похожие ветки
← →
Amid (2004-07-15 10:20) [0]При выполнене процедуры Execute програма блокир., и имено где Memo1.Lines.Add(). Подскажите где ошибка !!!!
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
Var
c : TMemoryStream;
s : String;
begin
c:=TMemoryStream.Create;
c.LoadFromFile("d:\sointer.gdb");
with AThread.Connection do
Begin
s:=ReadLn;
Memo1.Lines.Add("Server :"+s);//сдесь Блокируется ????
If s="QWE" Then
Begin
WriteStream(c,true,false);
Memo1.Lines.Add("Server <-WriteStream");
Disconnect;
c.Free;
End;
End;
end;
← →
tp (2004-07-15 10:39) [1]TMemoryStream.Position
← →
Ozone © (2004-07-15 13:44) [2]Наученый горьким опытом: "И вообще не помешала бы синхронизация с VCL-потоком, ИМХО"
← →
NAlexey © (2004-07-15 14:31) [3]>Amid (15.07.04 10:20)
Повторю специально для тебя:
Ты используешь TidThreadMgrPool или TidThreadMgrDefault?
← →
Sandman25 © (2004-07-15 14:36) [4]А мне тут больше всего нравится, что C.Free стоит в if вместо finally :)
← →
Th (2004-07-15 14:59) [5]надо писать процедуру такую вот:
procedure AddToMemo;
begin
Memo1.Lines.Add("Server :"+FStr);
end;
FStr делать полем класса
и в Execute писать так:
Synchronize(AddToMemo);
и так со всеми thread-незащищенными вызовами (VCL, GDI и проч..)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c