Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 293
#1

Embarcadero - Мобильное приложение для Андроид - Программирование Android

14.08.2014, 14:50. Просмотров 2340. Ответов 14
Метки нет (Все метки)

Добрый день!Пишу приложение для Андроид, компилирую на ХЕ6. Был код на С++ Билдер. Под Embarcadero его немного изменил. Подскажите пожалуйста, где исправить ошибки в коде: (UI, наверно вы сможете детальнее помочь, код вам знаком с предыдущих тем)

Unit2.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <fmx.h>
#include <algorithm>
#include <stdexcept>
#include "Unit2.h"
#include "Unit3.h"
 
#pragma hdrstop
 
 //---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
 
extern const int size = 7;   
extern int MySleep;
TRect Coord;
TForm2 *Form2;
 
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
ListBox1->Clear();
 ListBox2->Clear();
  calcThread_1 = new CalcThread(false);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button4Click(TObject *Sender)
{
 
 
  MyTerminated = false;
 
  Button3->Visible=true;
  Button5->Visible=true;
 
  DWORD Msg;
 
for( int i = StrToInt(Edit2->Text); i < StrToInt(Edit3->Text); i++ )
   {
    for( int j = 1; j<8; j++ )
    {
 
                   {
                String str_tmp = "";
                str_tmp = Form2->ListBox1->Items->Strings[i];
                switch( StrToInt(Form2->ListBox1->Items->Strings[i].SubString(j,1)) ) 
                {
                    case 1: { Form2->Fill->Color= TAlphaColor (claRed);
                            
                            } break;
                    case 2: { Form2->Fill->Color= TAlphaColor (claOrange);
                            
                            } break;
                    case 3: { Form2->Fill->Color= TAlphaColor (claYellow);
                          
                            } break;
                    case 4: { Form2->Fill->Color= TAlphaColor (claGreen);
                            
                            } break;
                    case 5: { Form2->Fill->Color= TAlphaColor (claDeepskyblue);
                            
                            } break;
                    case 6: { Form2->Fill->Color= TAlphaColor (claBlue);
                           
                            } break;
                    case 7: { Form2->Fill->Color= TAlphaColor (claDarkorchid);
                            
                            } break;
                } 
              } break;
}
Sleep( MySleep );
        Application->ProcessMessages();
}
Unit3.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <fmx.h>
#include "Unit2.h"
#include "Unit3.h"
#include <algorithm>
//#include <windows.h>
#include <stdexcept>
//#include <mmsystem.h>
//#include <Forms.hpp>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma package(smart_init)
 #pragma resource "*.fmx"
//HMIDIOUT Out;        
int i = 0, j = 0;     
const int size = 7;   
int MySleep;    
TStringList *L = new TStringList;
TStringList *all;
 
 
void __fastcall CalcThread::Execute()
{
 
  String indexes[size] =
    {"1", "2", "3", "4", "5", "6", "7"};
 
  all = new TStringList();
  do
    {
    String s = "";
    for (int i = 0; i < size; i++)
      s += indexes[i] + (i < size - 1 ? "," : "");
    all->Add(s);
    }
    while (std::next_permutation(indexes, indexes + size));
 
  for (int i = 0; i < all->Count / 6; i++)
    {
    all->Exchange(6*i + 2, 6*i + 4);
    all->Exchange(6*i + 3, 6*i + 5);
    all->Exchange(6*i + 4, 6*i + 5);
    }
 
  Synchronize( SyncCalcThread );
 
  delete all;
}
 
void __fastcall CalcThread::SyncCalcThread()
{
 LB_Contents->Clear();
    //Form2->ListBox1->Count = all->Count;
 
   Form2->ListBox2->Items->Assign(all);
    String userData =Form2->Edit1->Text;
    Form2->ListBox1->Items->BeginUpdate();
 
    std::auto_ptr<TStringList>L(new TStringList);
    if (Form2->RadioButton1->IsChecked == true)
 
          {
        for (int i = 0; i < all->Count; i++)
        {
            L->Clear();
            String s = "";
            if (i == 0)
            {
                if (Form2->RadioButton3->IsChecked == true)
                {
                    all->Exchange(0, 0);
                  }
                if (Form2->RadioButton4->IsChecked == true)
                   {    all->Exchange(1, 0);
                    }
                if (Form2->RadioButton5->IsChecked == true)
                   {    all->Exchange(2, 0);
                    }
                if (Form2->RadioButton6->IsChecked == true)
                   {    all->Exchange(3, 0);
                    }
                if (Form2->RadioButton7->IsChecked == true)
                    {all->Exchange(4, 0);
                    }
                if (Form2->RadioButton8->IsChecked == true)
                    {all->Exchange(5, 0);
                    }
 
            }
            L->CommaText = all->Strings[i];
            for (int j = 0; j < L->Count; j++)
                s += userData[StrToInt(L->Strings[j])];
            Form2->ListBox1->Items->Add(s);
            LB_Contents->Add(s);
        }
    }
 
    if (Form2->RadioButton2->IsChecked == true)
    {
        // "ГђГ*çâåðГ*ГіГІГј" LB_Contents
        //int lc = Form1->LB_Contents->Count / 2;
        for (int i=0;i < (all->Count / 2); i++)
        {
          all->Exchange(i, all->Count-i-1);
        }
 
L->Clear();
          String s = "";
          L->CommaText = all->Strings[i];
          for (int j = 0; j < L->Count; j++)
            s += userData[StrToInt(L->Strings[j])];
          Form2->ListBox1->Items->Add(s);
          LB_Contents->Add(s);
        }
 
    Form2->ListBox1->Items->EndUpdate();
}
Unit2.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Forms.hpp>
#include <FMX.Layouts.hpp>
#include <FMX.ListBox.hpp>
#include <FMX.StdCtrls.hpp>
#include <FMX.Types.hpp>
 #include "Unit3.h"
#include <FMX.Edit.hpp>
//#include <CheckLst.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published:    // IDE-managed Components
    TButton *Button1;
    TButton *Button2;
    TRadioButton *RadioButton2;
    TButton *Button3;
    TButton *Button4;
    TButton *Button5;
    TEdit *Edit2;
    TEdit *Edit3;
    TRadioButton *RadioButton5;
    TRadioButton *RadioButton6;
    TRadioButton *RadioButton7;
    TRadioButton *RadioButton3;
    TRadioButton *RadioButton4;
    TRadioButton *RadioButton8;
    TRadioButton *RadioButton9;
    TRadioButton *RadioButton10;
    TRadioButton *RadioButton11;
    //TRadioButton *Цвет;
    TRadioButton *RadioButton12;
    TRadioButton *RadioButton13;
    TRadioButton *RadioButton14;
    TCheckBox *CheckBox1;
    TCheckBox *CheckBox2;
    TCheckBox *CheckBox3;
    TCheckBox *CheckBox4;
    TCheckBox *CheckBox5;
    TCheckBox *CheckBox6;
    TCheckBox *CheckBox7;
    TCheckBox *CheckBox8;
    TCheckBox *CheckBox9;
    TCheckBox *CheckBox10;
    TCheckBox *CheckBox11;
    TCheckBox *CheckBox12;
    TRadioButton *RadioButton15;
    TListBox *ListBox1;
    TListBox *ListBox2;
    TEdit *Edit1;
    TRadioButton *RadioButton1;
    void __fastcall Button2Click(TObject *Sender);
    void __fastcall ListBox1Data(TControl *Control, int Index,
          AnsiString &Data);
    void __fastcall Button4Click(TObject *Sender);
    void __fastcall Button5Click(TObject *Sender);
    void __fastcall OnResetColor();
    void __fastcall FormCreate(TObject *Sender);
private:    // User declarations
public:     // User declarations
          CalcThread  *calcThread_1;
          TStringList *LB_Contents;
    __fastcall TForm2(TComponent* Owner);
 
    bool MyTerminated;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
Unit3.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef Unit3H
#define Unit3H
#include <System.Classes.hpp>
#include "Unit2.h"
#include <FMX.Forms.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Layouts.hpp>
#include <FMX.ListBox.hpp>
#include <FMX.StdCtrls.hpp>
#include <FMX.Types.hpp>
 #include "Unit3.h"
#include <FMX.Edit.hpp>
 
//---------------------------------------------------------------------------
class CalcThread : public TThread                          
{
private:
        TStringList *all;
        TStringList *LB_Contents;
protected:
        void __fastcall Execute();
        void __fastcall SyncCalcThread();
public:   TCheckBox *CheckBox1;
          TCheckBox *CheckBox2;
          TCheckBox *CheckBox3;
        __fastcall CalcThread(bool CreateSuspended)
                : TThread(CreateSuspended)
                {
                FreeOnTerminate = true;
                };
};
 
 
#endif
Ошибки:

[CLANG Error] Unit3.cpp(66): no member named 'auto_ptr' in namespace 'std'
[CLANG Error] Unit3.cpp(66): 'TStringList' does not refer to a value
System.Classes.hpp(1129): declared here
[CLANG Error] Unit3.cpp(66): called object type 'System::Classes::TStringList __borland_class *' is not a function or function pointer
Failed
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2014, 14:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Embarcadero - Мобильное приложение для Андроид (Программирование Android):

Embarcadero RAD Studio XE7 (С++) + Андроид устройства - Программирование Android
Добрый день! Возможно, многим покажется эта тема абсурдной, но тем не менее, у меня есть некоторые вопросы, и я был бы очень благодарен,...

Переделать приложение для Андроид в приложение для ПК - Программирование Android
Встретилась очень мне нужное приложение для анроид систем. К моему сожалению подобных программ нет для систем Windows. Реально ли такие...

Приложение для группы Vk под Андроид - Программирование Android
Здравствуйте. Нужно написать приложение для группы социальной сети &quot;Вконтакте&quot;. Если у кого-то имеется исходник подобного приложения или...

Как сделать андроид приложение для сайта? - Программирование Android
Здравствуйте. В андроид программировании разбираюсь чуток, дали задание в универе сделать андроид приложение для сайта кафедры. Нужно чтобы...

Мобильное приложение - Программирование Android
Друзья доброе время суток. Подскажите пожалуйста. Я создал приложение в АндроидСтудио, запускаю на Genymotion - все работает отлично....

Какое приложение можно написать для диплома по ос Андроид? - Программирование Android
У меня тема диплома - &quot;Программирование для ОС Android&quot;. Какой проект можете посоветовать для написания в рамках этой темы?

14
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23660 / 15660 / 4703
Регистрация: 22.10.2011
Сообщений: 27,755
Записей в блоге: 5
14.08.2014, 16:06 #2
Цитата Сообщение от Pir12345 Посмотреть сообщение
no member named 'auto_ptr' in namespace 'std'
У тебя ж
C++
1
#include <memory>
нет, именно там описан auto_ptr
0
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 293
15.08.2014, 12:16  [ТС] #3
Точно, упустил, но теперь выдает ошибку

processing resource 'Unit3.fmx', -1

Добавлено через 20 часов 3 минуты
UI, а что это за ошибка появилась?гугл молчит по этому поводу
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23660 / 15660 / 4703
Регистрация: 22.10.2011
Сообщений: 27,755
Записей в блоге: 5
15.08.2014, 13:32 #4
Да откуда я знаю? Я XE5/XE6 вообще в глаза не видел, сырые они, чтобы что-то на них делать, кроме HelloWorld-ов... Даже под Windows. А уж тем более под Андроид.
0
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 293
15.08.2014, 13:35  [ТС] #5
Не видел, то возможно. Но советы канкретно правильные- просто класс.
Я тоже слышал что сырые они, только вот никак непойму, через что тогда пишут приложения для Андроид? На Андроиде порой встречаешь приложения, далеко не Хелло Ворд
0
NotBeginner
156 / 156 / 20
Регистрация: 22.02.2013
Сообщений: 2,816
Записей в блоге: 2
15.08.2014, 14:38 #6
Цитата Сообщение от Pir12345 Посмотреть сообщение
Андроиде
JAVA
0
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 293
15.08.2014, 14:42  [ТС] #7
NotBeginner, а как потом этот код на JAVA в .apk собирают?Можете дать весь комплекс ПО, необходимого для разработки?
0
Yushka
4 / 4 / 1
Регистрация: 24.07.2013
Сообщений: 80
15.08.2014, 16:08 #8
Pir12345, IntellijIDEA/Android Studio/Eclipse+Android SDK+JDK и всё. Собираются автоматически при компиляции. Изначально не планировалось, чтобы на сях под андроид кодили, чтобы не было жёсткой привязки к аппаратному обеспечению. Java с её виртуалкой работают универсально, потому-то на неё и пал выбор.
0
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 293
19.08.2014, 10:15  [ТС] #9
UI, удалось отладить ошибки о которых писал выше. Уже виднеется финишь, единственное что:

Если закомметирована строчка 52 unit3.cpp, то выходит ошибка:

[ldandroid Error] C:\xxx\Embarcadero\Studio\14.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: .\Android\Debug\Unit2.o: in function _ZTM6TForm2:.\Android\Debug\Unit2.o.ll(.data.rel.ro._ZTM6TForm2+0x2a): error: undefined reference to 'TForm2::ListBox1Data(Fmx::Controls::TControl*, int, System::AnsiStringT<(unsigned short)0>&)'

Если же ее раскомментировать, то выходят ошибки:

Unit3.cpp(52): cannot write a property that has no write specifiers

Похоже что компилятору не нравится способ заполнения ListBox1 (строчка 52 unit3.cpp).
Можно как то изменить способ заполнения?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23660 / 15660 / 4703
Регистрация: 22.10.2011
Сообщений: 27,755
Записей в блоге: 5
19.08.2014, 11:47 #10
Pir12345, если бы ты тогда, когда спрашивал об этом приложении, уточнил, что тебе оно нужно не для VCL, а для FMX, я бы придумал другой способ. В FMX действительно нет возможности выставлять TListBox::Count, поскольку:
C++
1
2
__property int Count = {read=GetCount, nodefault}; // FMX
__property int Count = {read=GetCount, write=SetCount, nodefault}; // VCL
Чувствуешь разницу? Геттер в Firemonkey есть, а сеттера - нет. И события OnData нет, а значит и возможности организовать виртуальный ListBox - тоже нет, надо переписывать код полностью. Но я это могу попробовать сделать только под Windows, у меня XE2, там FMX-то есть, а вот Андроидом даже не пахнет еще...
0
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 293
20.08.2014, 09:52  [ТС] #11
UI, спасибо большое за ответ.
Не совсем так.Дело в том, что мне программа нужна была именно для VCL (она там уже работает, за что вам, как непосредственному участнику ОГРОМНОЕ СПАСИБО!!!).
Для FMX я решил сделать ее позже. Причем для FMX я решил именно подправить уже написанный VCL вариант, а не писать заново, тем более на java. Поэтому и искал всякие компиляторы С++- Андроид.

Может быть есть возможность переписать по другому для VCL(под Windows) некоторые моменты, чтобы потом просто подправить у меня на FMX для Андроид. То есть сделать код так, чтобы потом не было ступора отсутствия свойств компонент и т .п.

Добавлено через 21 час 41 минуту
UI, что скажете?сможем так попробовать?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23660 / 15660 / 4703
Регистрация: 22.10.2011
Сообщений: 27,755
Записей в блоге: 5
20.08.2014, 10:05 #12
Я попробую, только не сегодня, и не в этой ветке. Найду твою старую тему, и отвечу там, если что-нибудь получится. Договорились?
0
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 293
20.08.2014, 10:20  [ТС] #13
UI, Да конечно, договорились!Буду ждать. Спасибо!
0
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 293
26.08.2014, 08:55  [ТС] #14
UI, Вы не забыли про программу, хотел Вам напомнить.

Со своей стороны упростил код по предела, выкинул виртуальный листбокс

Unit1.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <fmx.h>
#include <algorithm>
//#include <windows.h>
#include <stdexcept>
 
#pragma hdrstop
 
#include "Unit3.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
 
extern const int size = 7;
extern int MySleep;
int Data1;
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{ MyTerminated = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Form2->ListBox1->Clear();
Form2->ListBox2->Clear();
calcThread_1 = new CalcThread(false);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
MyTerminated = false;
  //colorThread_1 = new ColorThread(false);
  //soundThread_1 = new SoundThread(false);
 
 // HMIDIOUT Out;
  DWORD Msg;
  //midiOutOpen(&Out,0,0,0,0);
  for( int i = 0; i < Form2->ListBox1->Count ; i++ )
    {
    for( int j = 1; j<8; j++ )
      {
      Data1 = StrToInt(Form2->ListBox1->Items->Strings[i].SubString(j,1));
      switch( StrToInt(Form2->ListBox1->Items->Strings[i].SubString(j,1)) )
        {
        case 1: { Form2->Fill->Color= TAlphaColor (claRed);
                   //Msg = (0x90 + (60 * 0x100) + (0x7f * 0x10000));
                   //midiOutShortMsg(Out,Msg);
                    }
                   break;
        case 2: { Form2->Fill->Color= TAlphaColor (claOrange);
                  // Msg = (0x90 + (62 * 0x100) + (0x7f * 0x10000));
                   //midiOutShortMsg(Out,Msg);
                    }
                   break;
        case 3: { Form2->Fill->Color= TAlphaColor (claYellow);
                   //Msg = (0x90 + (64 * 0x100) + (0x7f * 0x10000));
                   //midiOutShortMsg(Out,Msg);
                    }
                   break;
        case 4: { Form2->Fill->Color= TAlphaColor (claGreen);
                   //Msg = (0x90 + (65 * 0x100) + (0x7f * 0x10000));
                   //midiOutShortMsg(Out,Msg);
                    }
                   break;
        case 5: { Form2->Fill->Color= TAlphaColor (claDeepskyblue);
                   //Msg = (0x90 + (67 * 0x100) + (0x7f * 0x10000));
                   //midiOutShortMsg(Out,Msg);
                    }
                   break;
        case 6: { Form2->Fill->Color= TAlphaColor (claBlue);
                   //Msg = (0x90 + (69 * 0x100) + (0x7f * 0x10000));
                   //midiOutShortMsg(Out,Msg);
                    }
                   break;
        case 7: { Form2->Fill->Color= TAlphaColor (claDarkorchid);
                   //Msg = (0x90 + (71 * 0x100) + (0x7f * 0x10000));
                   //midiOutShortMsg(Out,Msg);
                   }
                   break;
        }
 
      //Form2->Repaint();
 
      Sleep( MySleep );
      Application->ProcessMessages();
      //if( MyTerminated )
        //goto halt;
      }
 
    }
//halt:
//OnResetColor();
//midiOutClose(Out);
 }
//---------------------------------------------------------------------------
void __fastcall TForm2::Button3Click(TObject *Sender)
{
MyTerminated = true;
  //colorThread_1->Terminate(); //new ColorThread(true);
  //soundThread_1->Terminate(); //new SoundThread(true);
  //midiOutClose(Out);
  //OnResetColor();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Edit2Change(TObject *Sender)
{
if(Edit2->Text.Length()>0)
MySleep = StrToInt(Edit2->Text);
}
Unit2.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#pragma hdrstop
 
#include "Unit3.h"
#include "Unit2.h"
#include <algorithm>
#include <memory>
//#include <windows.h>
#include <stdexcept>
//---------------------------------------------------------------------------
#pragma package(smart_init)
 
int i = 0, j = 0;
const int size = 7;
int MySleep = 300;
 
void __fastcall CalcThread::Execute()
{
 
  String indexes[size] =
    {"1", "2", "3", "4", "5", "6", "7"};
 
  all = new TStringList();
  do
    {
    String s = "";
    for (int i = 0; i < size; i++)
      s += indexes[i] + (i < size - 1 ? "," : "");
    all->Add(s);
    }
    while (std::next_permutation(indexes, indexes + size));
 
  for (int i = 0; i < all->Count / 6; i++)
    {
    all->Exchange(6*i + 2, 6*i + 4);
    all->Exchange(6*i + 3, 6*i + 5);
    all->Exchange(6*i + 4, 6*i + 5);
    }
 
  Synchronize( SyncCalcThread );
 
  delete all;
}
//---------------------------------------------------------------------------
void __fastcall CalcThread::SyncCalcThread()
{
  Form2->ListBox2->Items->Assign(all);
              { if (Form2->RadioButton3->IsChecked == true)
                   {
                    all->Exchange(0, 0);
                   }
                if (Form2->RadioButton4->IsChecked == true)
                   {    all->Exchange(1, 0);
                   }
                if (Form2->RadioButton5->IsChecked == true)
                   {    all->Exchange(2, 0);
                   }
                if (Form2->RadioButton6->IsChecked == true)
                   {    all->Exchange(3, 0);
                   }
                if (Form2->RadioButton7->IsChecked == true)
                    {   all->Exchange(4, 0);
                    }
                if (Form2->RadioButton8->IsChecked == true)
                    {   all->Exchange(5, 0);
                    }
                }
 
       /*
      switch (Form2->RadioGroup1->ItemIndex)
     {
        case 0:all->Exchange(0, 0);
           break;
        case 1:all->Exchange(1, 0);
           break;
        case 2:all->Exchange(2, 0);
           break;
        case 3:all->Exchange(3, 0);
           break;
        case 4:all->Exchange(4, 0);
           break;
        case 5:all->Exchange(5, 0);
           break;
    }
            */
 
  String userData = Form2->Edit1->Text;
  Form2->ListBox1->Items->BeginUpdate();
 
  std::auto_ptr<TStringList>L(new TStringList);
 
//Ïðÿìîé Г°Г*Г±Г·ГҐГІ
  if(Form2->CheckBox1->IsChecked == true)
    {
    for (int i = 0; i < all->Count; i++)
      {
      L->Clear();
      String s = "";
      L->CommaText = all->Strings[i];
      for (int j = 0; j < L->Count; j++)
        s += userData[StrToInt(L->Strings[j])];
      Form2->ListBox1->Items->Add(s);
      }
    Form2->ListBox1->Items->EndUpdate();
    }
 
//ГЋГЎГ°Г*ГІГ*ûé Г°Г*Г±Г·ГҐГІ
  if(Form2->CheckBox2->IsChecked == true)
    {
     for (int i=0;i < (all->Count / 2); i++)
    //for (int i = 0; i < all->Count; i++)
      {
      all->Exchange(i, all->Count-i-1);
      L->Clear();
      String s = "";
      L->CommaText = all->Strings[i];
      for (int j = 0; j < L->Count; j++)
        s += userData[StrToInt(L->Strings[j])];
      Form2->ListBox1->Items->Add(s);
      }
    Form2->ListBox1->Items->EndUpdate();
    }
 
}
Проект скомпилировался, сформировался .apk, запустился на Андроиде, но сильно долго выполняется расчет CalcThread и почему то выводятся данные только в lisbox2, lisbox1- пустое. Соответственно дальше по кнопке Button2 программа не запускается.
0
ILNAR_93
26.08.2014, 15:33     Embarcadero - Мобильное приложение для Андроид
  #15

Не по теме:

Под Андроид на Firemonkey ? Мой тебе совет: не трать свое время! Приложения не запустятся на огромном количестве устройств

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2014, 15:33
Привет! Вот еще темы с ответами:

Андроид-приложение для интернет-магазина. С чего начать? - Программирование Android
ПОдскажите.У меня есть крупный интернет магазин.Мне нужно написать приложение для под андроид под него!.С чего начать что должен...

Андроид приложение для интернет магазина на движке Magento - Программирование Android
Получил задание написать мобильное приложение для интернет магазина, который создан на движке Magento. Никак не получается сформировать...

Приложение на андроид для поиска вакансий по Белоруссии. С чего начать? - Программирование Android
Добрый день, взял на дипломный проект приложение на андроид для поиска вакансий по Белоруссии, но понятия даже не имею с чего начать. По...

Создать приложение для GPS/GSM трекера под андроид - Программирование Android
Всем доброе утро или вечер))) Вообщем дело обстоит так, сделал я gps/gsm трекер для своего автомобиля. Принцип работы его таков, при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.08.2014, 15:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru