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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2013, 19:59   #1
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
Восклицание Потоки в android на delphi

Доброе время суток. Решил попробовать написать не большую программку для android. Столкнулся с проблемой:
Пытаюсь запустить поток, но ругается на tpLower, глянул и увидел что данные должны быть integer.

Код:
var
  SearchThread: TSearchThread;
begin
  SearchThread:=TSearchThread.Create(true);
  SearchThread.FreeOnTerminate:=true;
  SearchThread.Priority:=tpLower;
  SearchThread.Resume;
end;
Решил загуглить насчёт этого, какой должен быть приоритет.
Задал ругаться перестал собрался .apk но при запуске потока выдаёт ошибку.

Код:
var
  SearchThread: TSearchThread;
begin
  SearchThread:=TSearchThread.Create(true);
  SearchThread.FreeOnTerminate:=true;
  SearchThread.Priority:=5;
  SearchThread.Resume;
end;
Подскажите как правильно установить приоритет?
Глянул документацию delphi но так и не нашёл по данному вопросу ни чего.

Последний раз редактировалось -=Virus=-; 30.10.2013 в 22:12.
-=Virus=- вне форума Ответить с цитированием
Старый 30.10.2013, 20:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при запуске потока выдаёт ошибку.
Которая естесственно Гуглом сразу была забанена )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2013, 21:24   #3
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Которая естесственно Гуглом сразу была забанена )
В том то и дело что ничего внятного и не нашёл.
Кстати сама ошибка:
Цитата:
thread error: invalid argument (22).
Сделал так поток запустился и после завершения потока программа просто закрывается. И ошибок нет ни каких.
Цитата:
var
SearchThread: TSearchThread;
begin
SearchThread:=TSearchThread.Create( true);
SearchThread.FreeOnTerminate:=true;
SearchThread.Priority:=0;
SearchThread.Resume;
end;

Последний раз редактировалось Stilet; 31.10.2013 в 10:55.
-=Virus=- вне форума Ответить с цитированием
Старый 30.10.2013, 23:16   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от -=Virus=- Посмотреть сообщение
Сделал так поток запустился и после завершения потока программа просто закрывается. И ошибок нет ни каких.
это весь код приложения?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 31.10.2013, 07:31   #5
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
это весь код приложения?
Нет конечно.
Код:
unit TabbedFormwithNavigation;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Graphics, FMX.Forms, FMX.Dialogs, FMX.TabControl, FMX.StdCtrls,
  System.Actions, FMX.ActnList, FMX.Gestures, FMX.Edit, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  FMX.Layouts, FMX.ListBox, FMX.Ani, FMX.WebBrowser, Data.Bind.EngExt,
  Fmx.Bind.DBEngExt, Data.Bind.Components, inifiles;

type
TNewThread = class(TThread)
public
 procedure Execute;override;
end;

type
  TTabbedwithNavigationForm = class(TForm)
    TabControl1: TTabControl;
    ActionList1: TActionList;
    ChangeTabAction1: TChangeTabAction;
    ChangeTabAction2: TChangeTabAction;
    GestureManager1: TGestureManager;
    IdHTTP1: TIdHTTP;
    TabItem1: TTabItem;
    TabItem2: TTabItem;
    TabItem3: TTabItem;
    ListBox1: TListBox;
    Expander1: TExpander;
    FloatAnimation1: TFloatAnimation;
    WebBrowser1: TWebBrowser;
    Panel1: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    Switch1: TSwitch;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;

    procedure FormCreate(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure ListBox1ItemClick(const Sender: TCustomListBox;
      const Item: TListBoxItem);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  TabbedwithNavigationForm: TTabbedwithNavigationForm;


implementation

{$R *.fmx}





procedure TNewThread.Execute;
begin
 showmessage('1');
end;



procedure TTabbedwithNavigationForm.Button2Click(Sender: TObject);
var
 NewThread: TNewThread;
begin
          NewThread:=TNewThread.Create(true);
          NewThread.FreeOnTerminate:=true;
          //поток автоматически завершается после выполнения
          NewThread.Priority:=0;
          NewThread.Resume; //запуск потока
end;

procedure TTabbedwithNavigationForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
var
   Ini: TIniFile;
begin
   Ini:= TIniFile.Create('sdcard/.Raspisanie_LPK/settings');
   Ini.WriteString ( 'setting','Server_Proxy',  Edit1.Text);
   Ini.WriteString ( 'setting','Port_Proxy',  Edit2.Text);
   Ini.WriteBool ( 'setting' ,'Proxy',  Switch1.IsChecked);
end;

procedure TTabbedwithNavigationForm.FormCreate(Sender: TObject);
begin
  TabControl1.ActiveTab := TabItem3;
end;

procedure TTabbedwithNavigationForm.FormResize(Sender: TObject);
begin
  if DirectoryExists('sdcard/.Raspisanie_LPK/')
   then
  else CreateDir('sdcard/.Raspisanie_LPK/');
end;

procedure TTabbedwithNavigationForm.FormShow(Sender: TObject);
var
   ini: TIniFile;
begin
   Ini := TIniFile.Create('sdcard/.Raspisanie_LPK/settings');
   Edit1.Text := Ini.ReadString ('setting','Server_Proxy','');
   Edit2.Text := Ini.ReadString ('setting','Port_Proxy','');
   Switch1.IsChecked:= Ini.ReadBool ( 'setting','Proxy', True);

end;

end.
-=Virus=- вне форума Ответить с цитированием
Старый 31.10.2013, 10:56   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я криминала в коде не увидел.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2013, 14:25   #7
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

-=Virus=-, я что-то пропустил, или из по делфи можно строчить под андройд?
Кольша вне форума Ответить с цитированием
Старый 31.10.2013, 14:28   #8
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
-=Virus=-, я что-то пропустил, или из по делфи можно строчить под андройд?
Можно, только в Embarcadero RAD Studio XE5, там поддержка android есть.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я криминала в коде не увидел.
Я про это же. Самое интересное, при окончании потока программка сразу закрывается. И понять я не могу почему.

Вот что я увидел в System.Classes
Код:
{$IF Defined(MSWINDOWS)}
    property Handle: THandle read FHandle;
    property Priority: TThreadPriority read GetPriority write SetPriority;
{$ELSEIF Defined(POSIX)}
    // ** Priority is an Integer **
    property Priority: Integer read GetPriority write SetPriority;
    property Policy: Integer read GetPolicy write SetPolicy;
{$ENDIF POSIX}
Вот какое тогда число задать Priority? Всю уж голову поломал.

Последний раз редактировалось Stilet; 31.10.2013 в 14:55.
-=Virus=- вне форума Ответить с цитированием
Старый 31.10.2013, 14:58   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при окончании потока программка сразу закрывается.
Ошибка какая-то проходит, Андруша ее и вышибает.
P.S. мне казалось что для андройда нужно в uses использовать его пространство имен, а я там их у тебя не вижу. Хотя в 5-ке не работал, могу ошибаться.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2013, 18:15   #10
petrovichtim
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
-=Virus=-, я что-то пропустил, или из по делфи можно строчить под андройд?
Можно с версии XE5, только не под каждый, вот тут описан способ определения подходящего устройства.
petrovichtim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка в delphi под android Max1548 Общие вопросы Delphi 6 16.11.2013 12:22
Delphi XE5 +Android приложения furstenberg Общие вопросы Delphi 4 30.10.2013 11:09
Android и Delphi - время ли ликовать? Program(m)er Общие вопросы Delphi 9 23.08.2013 17:50
delphi-приложения на android Andrew2113 Помощь студентам 3 23.08.2013 14:05
Потоки в Delphi FanRa3 Общие вопросы Delphi 14 19.12.2010 22:13