![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Код:
type TMyThread = class(TThread) private { Private declarations } protected procedure Execute(x1,x2: String; nomer: integer); reintroduce; public constructor Create(x1,x2: String; nomer: integer); overload; end; constructor TMyThread.Create(x1,x2: String; nomer: integer); begin Create(True); FreeOnTerminate := True; Priority := tpNormal; Execute(x1,x2,nomer); end; procedure TMyThread.Execute(UIN,Msg: String; nomer: integer); //тут сам код потока уже нужно передавать пераменные в поток, вот у меня собственно вопрос все ли правильно сделал, тестировал вроде работает |
#2
|
||||
|
||||
![]() Ну думаю надо объявлять так:
Код:
type TMyThread = class(TThread) private { Private declarations } protected procedure Execute(x1,x2: String; nomer: integer); reintroduce; public constructor Create(x1,x2: String; nomer: integer); {overload не нужен} ... Помогаю за Спасибо ![]() Последний раз редактировалось v1s2222, 25.02.2011 в 18:06. |
#3
|
||||
|
||||
![]() я просто думал мб я не правильно вызываю поток обычно Resume; надо но туда переменные не подставишь, спасибо
|
#4
|
||||
|
||||
![]() Дак вы же сами предложили использовать reintroduce. Именно он и разрешает "переопределять" процедуру.
Помогаю за Спасибо ![]() |
#5
|
||||
|
||||
![]() можете сказать подробней, просто он у меня ошибку писал я прочитал что нужно добавить reintroduce дабы не ругался а так понятия не имею что делает reintroduce.
|
#6
|
||||
|
||||
![]() Код:
type TMyThread = class(TThread) private iParam: Integer; sParam: String; protected procedure Execute; override; public constructor Create(iParam: Integer; sParam: String); end; constructor TMyThread.Create(iParam: Integer; sParam: String); begin inherited Create(True); Self.iParam:=iParam; Self.sParam:=sParam; Resume; end; procedure TMyThread.Execute; begin while not Terminated do begin // iParam:=$ff; // sParam:='lost'; end; end; Код:
TMyThread.Create($ff, 'lost'); Пишу программы за еду. __________________ |
#7
|
||||
|
||||
![]() Reintroduce просто переопределяет функцию (процедуру). То бишь не выводит сообщение о перекрытии метода. В вашем случае метод Execute есть у класса TThread. А вы его переопределяете под ваши нужды.
Помогаю за Спасибо ![]() |
#8
|
||||
|
||||
![]() благодарю за пояснение NumLock и v1s2222
|
#9
|
||||
|
||||
![]() чето мне кажется чтото не так у меня, через некоторое время начинает писать мол недостаточно памяти для работы, похоже они не удаляются чтоли потоки
|
#10
|
||||
|
||||
![]() создай временно destructor и поставь в нем точку останова:
Код:
type TTitanicThread = class(TThread) public destructor Destroy; override; end; { TTitanicThread } destructor TTitanicThread.Destroy; begin inherited Destroy; //тут Breakpoint end; Пишу программы за еду. __________________ |
#11
|
||||
|
||||
![]() чтоб проверить разрушается ли?
|
#12
|
||||
|
||||
![]() не останавливается в том месте, хотя в потоке функция выполнилась, должно было разрушиться
Последний раз редактировалось ALexandr555, 26.02.2011 в 13:26. |
#13
|
||||
|
||||
![]() а сделано моим способом выше, мб переделать под твой?
|
#14
|
||||
|
||||
![]() NumLock твоим способом вроде работает, но чтото форма глючит два memo пропадает и label на половину прикрыт, а при закрытии ошибка
Error. Code: 1400. Недопустимый дескриптор окна |
#15
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |