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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2012, 16:40   #1
Pack
 
Регистрация: 09.02.2012
Сообщений: 8
По умолчанию Как передать параметр в поток?

Как передать параметр типа string в поток? глобальные переменные - не вариант.

допустим есть код, нужно из beginthread передать текст в процедуру msg.
Код:
procedure msg(mtext: string);
begin
showmessage(mtext);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
beginthread(nil, 0, @msg, 'text', nil, 0);
end;
но так ничего не получается. заранее спасибо
Pack вне форума Ответить с цитированием
Старый 21.02.2012, 16:58   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

открывает делфийскую справку вводим название функции beginthread, и смотрим что написано

Цитата:
function BeginThread(SecurityAttributes: Pointer; StackSize: LongWord; ThreadFunc: TThreadFunc; Parameter: Pointer; CreationFlags: LongWord; var ThreadId: LongWord): Integer;
Цитата:
Parameter points to a single 32-bit parameter that is passed, uninterpreted, to ThreadFunc.
ключевое слово - uninterpreted

Код:

procedure msg(mtext: string);
begin
showmessage(mtext);
end;

var
  str:string = 'текст';

procedure TForm1.Button1Click(Sender: TObject);
begin
beginthread(nil, 0, @msg, pointer(str), nil, 0);
end;
либо так
Код:

procedure msg(mtext: string);
begin
showmessage(mtext);
end;

var
  str:array = 'текст';

procedure TForm1.Button1Click(Sender: TObject);
begin
beginthread(nil, 0, @msg, pointer(@str[1]), nil, 0);
end;

Последний раз редактировалось rpy3uH; 21.02.2012 в 17:05.
rpy3uH вне форума Ответить с цитированием
Старый 21.02.2012, 17:21   #3
Pack
 
Регистрация: 09.02.2012
Сообщений: 8
По умолчанию

rpy3uH, спасибо. но я как бы написал, что нужно без глобальных переменных обойтись да и к тому же, а если нужно передать несколько параметров?
Pack вне форума Ответить с цитированием
Старый 22.02.2012, 12:09   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
но я как бы написал, что нужно без глобальных переменных обойтис
Вообще-то если внимательно посмотреть, то процедура потока не использует глобальную переменную. Вопрос: о чём нам это говорит?

Цитата:
да и к тому же, а если нужно передать несколько параметров?
В курсе про record?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать правильно параметр. ZHDN Общие вопросы Delphi 4 01.08.2011 14:22
как програмно передать параметр в запрос на выборку Святой Дьявол Microsoft Office Access 6 09.06.2010 22:20
Как передать в функцию параметр разных типов borispnz Общие вопросы Delphi 5 06.02.2010 08:37
Как передать параметр в другое(модальное) окно? kiber0net0 Общие вопросы Delphi 3 21.09.2008 13:03
Как передать параметр? Иллидан Общие вопросы Delphi 8 12.07.2008 12:57