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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 13:09   #1
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию Объявление процедуры

Нужно вызвать процедуру в потоке. тело процедуры в главном юните... Как сделать так чтобы поток видел эту процедуру?
Progs1024 вне форума Ответить с цитированием
Старый 01.12.2009, 13:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну а как ты поток то создаешь?
В принципе в том модуле где нужно вызывать процедуру в uses пропиши имя того модуля с процедурой и вызывай.
Стандартная схема...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2009, 13:22   #3
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

Код:
unit StartUnit;

interface

uses
  Classes, SysUtils;

type
  TStartObj = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

implementation

uses Main;

procedure TStartObj.Execute;
begin
// Здесь нужно вызвать процедуру
end;

end.
после выполнения кода в потоке, мне нужно вызвать процедуру которая находится в главном юните... как мне это сделать? я что-то не понял
Progs1024 вне форума Ответить с цитированием
Старый 01.12.2009, 13:37   #4
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Так пойдет? Или принципиально, чтобы процедура была объявлена в классе формы?

ЗЫ. Только не нужно ShowMessage в потоке вызывать. Это я так, для примера

Код:
uses
  Classes, SysUtils;

procedure Test; forward;

type
  TStartObj = class(TThread)

implementation

procedure Test;
begin
  ShowMessage(Form1.Button1.Caption);
end;
Упс... Упустил из виду, что поток создается в другом юните. Сам-то давно так не делаю. В общем пардон, но пост стирать не буду. Авось пригодится.

Последний раз редактировалось Баламут; 01.12.2009 в 13:51.
Баламут вне форума Ответить с цитированием
Старый 02.12.2009, 12:04   #5
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

вы меня не поняли)) допустим у моей процедыру название "start"... вот когда я в потоке пишу
Код:
form1.start;
, Делфи мне пишет "Undeclared identifier: 'start'"
Progs1024 вне форума Ответить с цитированием
Старый 02.12.2009, 12:12   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как обьявлена процедура в вашем основном модуле?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.12.2009, 12:12   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты в uses допиши имя модуля где форма описана.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.12.2009, 12:41   #8
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

Дописано уже, но после implementation
Progs1024 вне форума Ответить с цитированием
Старый 02.12.2009, 12:45   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если процедура обьявлена так как показал Баламут(подобно...но суть в том что не как метод класса формы)
тогда просто пишите её имя. иначе form1.<имя>.

и вообще я вопрос задал, который сразу решил бы вашу проблему(позволил бы дать точный ответ)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.12.2009, 13:17   #10
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

Извините, не заметил вопроса...
Процедура объявлена просто:
Код:
procedure start;
begin
//Код
end;
Progs1024 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление функции Rekky Общие вопросы C/C++ 5 30.09.2009 16:59
объявление процедуры AIst Общие вопросы Delphi 4 16.01.2009 14:12
Объявление и вызов процедуры Fantom Паскаль, Turbo Pascal, PascalABC.NET 1 04.12.2008 21:25
Объявление собственной глобальной процедуры Gorin Общие вопросы Delphi 11 06.11.2007 17:49