Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2009, 13:10   #1
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию Проблемы поток+таймер, вопрос см в нутри

В общем создал поток
Код:
type
TSearchjj = class (TThread)
private
protected
public
    procedure jj;

end;
в OnCreate формы пишу как полагается
Код:
Searchjj:=TSearchjj.Create(true);
Searchjj.FreeOnTerminate:=false;
Searchjj.Priority:=tpNormal;
а вот когда мой таймер включает

Код:
procedure TForm1.timer_updTimer(Sender: TObject);
begin
if timer_upd.Tag <> 3 then begin

    if timer_upd.Tag = 1 then begin
      LabelRename.Resume;
      LabelRename.yaga;
    end;

    if timer_upd.Tag = 0 then begin
      Searchjj.Resume;
      Searchjj.jj;
    end;
сам поток
Код:
procedure TSearchjj.jj;
var
found_jj: string;
found_jj_pos1, found_jj_pos2: Integer;
begin
Form1.timer_upd.Enabled:=false; {останавливаем таймер чтоб не бурагозил}
if guest_adress <> '' then begin {если мы не пустые в Edit1 то}
try
Form1.memo_found.Text:=Form1.http1.Get(guest_adress);
except on stay : Exception do begin
programmhalt; {если что делаем ноги пока не образовось исключение}
Exit;
end;
end;
Когда делаю трассировку по F7, собственно делфя мне показывает "ошибку" (Project bb.exe raised exception class EAbstractError with message 'Abstract Error'. Process stoped. Use Step or Run to continue). А что самое интересное, ошибка появляется не на одном месте, а на первых 0-5 строках от begin тоесть всегда по разному что не менее интересно, курсор не встает на Begin или еще куда. а когда я опять жму F7 то курсор нормально переходит как не в чем не бывало на следующую строку
Des вне форума Ответить с цитированием
Старый 03.05.2009, 13:22   #2
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

Извиняюсь =) ошибка появляется на процедуре procedure TSearchjj.jj; тоесть сразу же как включает её таймер
Des вне форума Ответить с цитированием
Старый 03.05.2009, 13:36   #3
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Напиши полностью как TSearchjj создаешь.
Код:
type
TSearchjj = class (TThread)
private
protected
public
    procedure jj;

end;
Маловато... скорее тут ошибка
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 03.05.2009, 14:06   #4
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

Код:
unit Unit3;

interface
uses Classes, unit1;
type
TLabelRename = class (TThread)
private
    procedure RandomAdress;
protected

public
    procedure yaga; override;
end;
                        {SEARCH}
type
TSearchjj = class (TThread)
private
protected
public
    procedure jj;
end;
procedure LogIn;


var
LabelRename: TLabelRename;
Searchjj: TSearchjj;
первый поток, работает изумительно и он не мешает я так думаю второму, потому что во втором Searchjj стоит запуск первого ЛэйблРенейма (Resume)
Des вне форума Ответить с цитированием
Старый 03.05.2009, 14:12   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

интерестно а вообще то в потоках идет метод Execute разве можно его переименновывать?
и кстати о методах синхронизации кто должен думать?
если у тя в потоке идет обращение к компонентам формы
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.05.2009, 14:27   #6
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
интерестно а вообще то в потоках идет метод Execute разве можно его переименновывать?
так мыж процедуру сами вроде как создаем


Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
и кстати о методах синхронизации кто должен думать?
если у тя в потоке идет обращение к компонентам формы
мм а в моем примере где код синхронизации надо?, в конце Search у меня стоит синхронизация на вторую процедуру, в которой в свою очередь стоит на третью. лесенка в 4 процедуры от (Search.xxxx(4)) но там все работает в порядке, после этого сообщения об ошибки, программа раобтает как и должна, но что за ошибка и к чему она вообще
Des вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по GDI+ (почитать в поток/буфер) CrazyProgramer Мультимедиа в Delphi 8 06.01.2009 23:41
Поток Черничный Общие вопросы Delphi 5 27.09.2008 21:23
Вопрос про таймер igroman Общие вопросы Delphi 1 31.05.2008 18:34
Как создать shap внутри программы? kl45gp Общие вопросы Delphi 3 13.06.2007 10:02