Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синхронизация с главным потоком 
:(
    Опции темы
eXa
Дата 22.12.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



Цитата
Если честно , то я ничего не понял 
 
Да вопрос у меня один только. Если надо синхронизировать с функцией главной нити, что делать? А остальное без исходников и не понять.
PM MAIL   Вверх
Romikgy
Дата 22.12.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(eXa @  22.12.2006,  15:45 Найти цитируемый пост)
Если надо синхронизировать с функцией главной нити, что делать? 

а до этого чем занимались?

Цитата(eXa @  22.12.2006,  15:45 Найти цитируемый пост)
А остальное без исходников и не понять. 

дык выкладывай


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
eXa
Дата 22.12.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



Цитата

а до этого чем занимались?

У тебя в примере, синхронизируется только процедуры, если попробывать синхронизировать функции, вылезает следующия ошибка:  There is no overloaded version of 'Synchronize' that can be called with these arguments

Цитата

дык выкладывай

Пожайлуста

Код

procedure MaName.Execute;
var
  c, t: integer;
  oks: string;
begin
 t:=0;
  for c:= 0 to LsMa.Count-1 do begin
   if c mod 2 = 0 then
    Inc (t);
    if c = 20 then
     t:= 0;
    maok:= LsMa.Strings[c];
     oks:= LsOks.Strings[t];
     TThread.Synchronize(nil,Form1.Send);
  end;
 end;


Код


procedure TForm1.Send;
var
  i :   Integer;
  x :   String;
begin
  x:= nms.Text;
  for i:= 1 to strtoint(x) do begin
  mats(mak, ps, vtm, tex);
    SubDelay(1000);
 end;
end;



если x >1 то цикл C = 0, если x=1 то цикл работает нормально  




Это сообщение отредактировал(а) eXa - 22.12.2006, 23:04
PM MAIL   Вверх
Romikgy
Дата 22.12.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
если попробывать синхронизировать функции

а зачем ? переделай под процедуру

Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
Пожайлуста


Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
если x >1 то цикл C = 0, если x=1 то цикл работает нормально  

этого кода мало 
ибо что есть
Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
Form1.Send


Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
LsMa


Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
LsOks


Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
mats


Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
  SubDelay

 smile 
прицепи весь проект , и скажи что хочешь что б было ,
тогда можно будет сказать как это сделать


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
eXa
Дата 22.12.2006, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



Цитата
а зачем ? переделай под процедуру

Если можно было, то переделал, только функцией, подругому никак=(
Цитата
этого кода мало 
ибо что есть

когда больше x, от 2 до бесконечности
Цитата
Form1.Send

извеняюсь Form1.Send это и есть процедура  TForm1.SendSMSki
Цитата
LsMa
 & 
Цитата
LsOks

Код
LsOck:= TStringList.Create;
  LsOks.LoadFromFile('oks.txt');
  LsMa:= TStringList.Create;
  LsMa.LoadFromFile('ma.txt');

Цитата
mats

Это функция, каторая делется на множество подфункций, по отправке и получения ответа сокетов
Цитата
SubDelay

Почти тоже самое что и sleep, только без всяких зависаний
Код

procedure SubDelay(Time: Cardinal);
 var
   Ticks: Cardinal;
 begin
   Ticks:= GetTickCount;
   while GetTickCount - Ticks < Time do
   begin
     SleepEx(50, True);
     Application.ProcessMessages
   end;
 end;



Это сообщение отредактировал(а) eXa - 22.12.2006, 23:11
PM MAIL   Вверх
Romikgy
Дата 22.12.2006, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



мне все равно не понятно почем при 
Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
если x >1 то цикл C = 0

ведь с зависит от LsMa.Count
Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
 for c:= 0 to LsMa.Count-1 do begin

а х зависит от 
Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
  x:= nms.Text;
  for i:= 1 to strtoint(x) do begin

nms.Text
 smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
eXa
Дата 23.12.2006, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



Мне темболее непонятно, я сказал как есть, nms.text - едит который передаёт значение x, тоесть значение до которого накручивается цикл

Это сообщение отредактировал(а) eXa - 23.12.2006, 04:26
PM MAIL   Вверх
Romikgy
Дата 23.12.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(eXa @  23.12.2006,  03:24 Найти цитируемый пост)
Мне темболее непонятно

тогда проще может скажешь что хочешь в конце получить?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ВоВеЦ
Дата 23.12.2006, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 20.4.2006

Репутация: нет
Всего: нет



Я хочу чтоб цикл в procedure MaName.Execute работал нормально при любом значении x 
PM MAIL   Вверх
Romikgy
Дата 23.12.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
procedure MaName.Execute;
var
  c, t: integer;
  oks: string;
begin
 t:=0;
  for c:= 0 to LsMa.Count-1 do begin
   if c mod 2 = 0 then
    Inc (t);
    if c = 20 then
     t:= 0;
    maok:= LsMa.Strings[c];
     oks:= LsOks.Strings[t];
     TThread.Synchronize(nil,Form1.Send);
  end;
 end;

Я чета здесь упоминания х вообще не вижу smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ВоВеЦ
Дата 23.12.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 20.4.2006

Репутация: нет
Всего: нет



Если ты читал мои посты то должен понять про чё, x в процедуре  TForm1.Send; 
Цитата

если x >1 то цикл C = 0, если x=1 то цикл работает нормально  

PM MAIL   Вверх
Romikgy
Дата 23.12.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



кса одна трабла могет быть

Цитата(eXa @  22.12.2006,  18:26 Найти цитируемый пост)
maok:= LsMa.Strings[c];
     oks:= LsOks.Strings[t];

хоть и чтение но могут быть траблы, ибо обращение из потока к данным основного потока(форме)


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ВоВеЦ
Дата 23.12.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 20.4.2006

Репутация: нет
Всего: нет



Они есть эти траблы, только как сделать прально?
PM MAIL   Вверх
Romikgy
Дата 23.12.2006, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(ВоВеЦ @  23.12.2006,  16:47 Найти цитируемый пост)
Если ты читал мои посты то должен понять про чё, x в процедуре  TForm1.Send; 

читал я читал
а терь объясни мне для какой цели ты юзаешь поток?
Цитата(ВоВеЦ @  23.12.2006,  16:53 Найти цитируемый пост)
Они есть эти траблы, только как сделать прально? 

имхо все обращения к форме надо делать через синхронизацию!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ВоВеЦ
Дата 23.12.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 20.4.2006

Репутация: нет
Всего: нет



Цитата

а терь объясни мне для какой цели ты юзаешь поток?

В потоке у меня берутся значения переменных из текстовика, переменные используются в главной нити
Цитата

имхо все обращения к форме надо делать через синхронизацию!

У меня одна процедура в потоке и следовательно одно обращенние к форме через синхронизацию, тоесть всё Оk

Это сообщение отредактировал(а) ВоВеЦ - 23.12.2006, 19:01
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1096 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.