• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Как Передать Токен В Процедуру Потока?

  • Автор темы Автор темы Polya
  • Дата начала Дата начала

Polya

Принятый Кодер
Регистрация
8 Июн 2016
Сообщения
47
Баллы
50
Как передать токен в процедуру потока, если в потоке нельзя обращаться к глобальным переменным?
work:boolean глобальная
response, token: string глобальные
Код:
  TOnline = class(TThread)
  private
  Interval:integer;
  HTTP:thttpsend;
  procedure Execute; override;
  end;
Код:
procedure TOnline.Execute;
var
th:TThread;
temp:string;
i:integer;
begin
inherited;

while Work do
begin
HTTP:=thttpsend.Create;
   sleep(interval);
   TThread.Synchronize(Self, procedure begin
   response:=send('GET', 'https://api.vk.com/method/account.setOnline?&access_token='+ token);
   end);
end;
end;
Код:
procedure TForm1.sSlider1Click(Sender: TObject);
var
th:TThread;
i:integer;
begin
for i := 0 to 4 do
if sSlider1.SliderOn=true then begin
Th := TOnline.Create;
(Th as TOnline).Interval := 1000;
end
else
th.Terminate;
sleep(500);
th.DisposeOf;
end;
r-v_5pxbumQ.jpg
 
Последнее редактирование:
Советую почитать эту статьюhttps://forum.antichat.ru/threads/326306/
Мой тебе советую если хочешь обратиться к глобальному параметру из потока,лучше использавать адрес.
Для этого есть специальный аргумент в данной функции - lpParameter. То есть можно передать указатель на переменную или инициализированную структуру, а в потоке использовать эти значения для совершения необходимых действий.

Передавать его просто - сделать операцию получения адреса. Получить его - присвоить адрес своей переменной и сделать разыменование адреса.

var Nya:^Integer;
A: Integer;...
K := lpParam;// присваивание...
A =10+ K^;// использование
И вместо CreateThread лучше в Delphi BeginThread использовать.

Глобальные переменные, конечно, тоже можно, но там надо аккуратнее.
 
Советую почитать эту статьюhttps://forum.antichat.ru/threads/326306/
Мой тебе советую если хочешь обратиться к глобальному параметру из потока,лучше использавать адрес.
Для этого есть специальный аргумент в данной функции - lpParameter. То есть можно передать указатель на переменную или инициализированную структуру, а в потоке использовать эти значения для совершения необходимых действий.

Передавать его просто - сделать операцию получения адреса. Получить его - присвоить адрес своей переменной и сделать разыменование адреса.

var Nya:^Integer;
A: Integer;...
K := lpParam;// присваивание...
A =10+ K^;// использование
И вместо CreateThread лучше в Delphi BeginThread использовать.

Глобальные переменные, конечно, тоже можно, но там надо аккуратнее.
Спасибо) Это уже по интереснее будет.
 
Вверх Снизу