Перейти к содержанию
Fire Monkey от А до Я
  • 0

Не работает поток на других ПК


Вопрос

Здраствуйте, не знаю в чем проблема. Поток в програме работает на моей машине, в не зависимосте как запустил програму, в среде или нет. С vcl проблем небыло, а сейчас перевел на fmx. Поток должен мониторить визуальный компонент и если нада обращаться к бд. 

А на стороннем пк поток не запускаеться. Запускаю так.

var
  th : SomeThread;
begin
  th                 := SomeThread.Create;
  th.FreeOnTerminate := true;
  th.Resume;
end;

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Визуально только опредилить работу могу. Memo не очищаеться. И в tempbase ничего не пишеться.

procedure localbackup.memcount;
begin
  count:=main.main_form.sqlmemo.Lines.Count;
end;

procedure localbackup.updatememo;
var
i:integer;
begin
setlength(mem,0);
setlength(mem,main.main_form.sqlmemo.Lines.Count);
tempbase.SQL.Clear;
tempbase.SQL.Append('SELECT * FROM queries');
tempbase.Active:=True;
  for I := 0 to main.main_form.sqlmemo.Lines.Count-1 do
  begin
    tempbase.Insert;
    tempbase.FieldByName('sql_rec').AsString:=main.main_form.sqlmemo.Lines[i];
    tempbase.Post;
    {tempbase.SQL.Append(main.main_form.sqlmemo.Lines[i]);}
  end;
tempbase.Active:=false;
  main.main_form.sqlmemo.Lines.Clear;
end;

procedure localbackup.Execute;
begin
  { Place thread code here }
  tempdbcreate;
  base:=Tuniquery.Create(nil);
  base.Connection:=main.main_form.local;
  while True do
  begin
  sleep(5000);
  if main.main_form.local.Connected then
    begin
      synchronize(memcount);
      if (count)>0 then
        begin
          Synchronize(updatememo);
          writeinbase;
          writeinbackup;
        end;
    end
  else begin  ///
       locstatus(1,'str');
       sleep(15000);
       end;
  end;
end;

 

Изменено пользователем Володимир Антонашко
Ссылка на комментарий
  • 0

Могу добавить что пробовал на windows xp и windows 7. Результат аналогичен. Связка unidac+sqlite в директ режиме. Local.connected точно true. Работа с базой ведеться в основном потоке нормально.

Изменено пользователем Володимир Антонашко
Ссылка на комментарий
  • 1
  • Администраторы

Может, потому что не выполняется?

  if (count)>0 then

Залогируйте, что метод Execute стартанул, и сразу поймете в чем ошибка.

Ссылка на комментарий
  • 0

Извините все утро на это потратил и забыл проверить очевидное. Нужно больше спать.

Когда создавал tempbase поставил почему то direct=false, и забыл. Спасибо всем за помощь.

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...