Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
morgan1391
1

Проблемы при перенесении кода с Delphi на Android

09.04.2013, 19:04. Показов 1902. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть написанная программа на Delphi и я хочу сделать аналогичную для андроида, учитывая, что я недавно начал, что-то делать под андроид, проблема в том, что не могу перенести некоторые языковые конструкции например: с ComboBox на Spinner и вообще мне не совсем понятно, как работать со Spinner-ом. Читал уроки про этот выпадающий список, но как то все не ясно. Поэтому прошу помощи при перенесении кода.
Java
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
import android.os.Bundle;
import android.app.Activity;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    
public class onClickListener{
    EditText editText1;
    EditText editText2;
    EditText editText3;
    EditText editText4;
    EditText editText5;
    
    RadioButton radioButton1;
    RadioButton radioButton2;
    
    Button button1;
    
    Spinner spinner1;
    Spinner spinner2;
    Spinner spinner3;
    Spinner spinner4;
    
    TextView textView19;
    TextView textView20;
}   
    
 
private EditText editText1;
private EditText editText2;
private EditText editText3;
private EditText editText4;
private EditText editText5;
private Button button1;
private Spinner spinner1;
private Spinner spinner2;
private Spinner spinner3;
private Spinner spinner4;
private TextView textView19;
private TextView textView20;
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // подключение элементов
        editText1 = ((EditText)findViewById(R.id.editText1));
        editText2 = (EditText)findViewById(R.id.editText2);
        editText3 = (EditText)findViewById(R.id.editText3);
        editText4 = (EditText)findViewById(R.id.editText4);
        editText5 = (EditText)findViewById(R.id.editText5);
        
        button1 = (Button)findViewById(R.id.button1);
        
        spinner1 = (Spinner)findViewById(R.id.spinner1);
        spinner2 = (Spinner)findViewById(R.id.spinner2);
        spinner3 = (Spinner)findViewById(R.id.spinner3);
        spinner4 = (Spinner)findViewById(R.id.spinner4);
 
        textView19 = (TextView)findViewById(R.id.textView19);
        textView20 = (TextView)findViewById(R.id.textView20);
        
        button1.setOnClickListener((OnClickListener) this);
    }
 
   
    
    public void onClick(View v){
        
    double TAU = 0;        //продолжительность сушки
    double TAU0 = 0;       //исходная продолжительность сушки (по лиственнице)
    double Ar = 0;         //коэффициенты, учитывающие категорию режимов сушки
    double Ac = 0;         //интенсивность циркуляции
    double Aw = 0;         //начальную и конечную влажность
    double Ak = 0;         //качество сушки
    double Ad = 0;         //длину материала
    double Ap = 0;         //породу древесины
    double S1 = 0;         //толщина доски
    double S2 = 0;         //ширина доски
    double L = 0;          //длина доски
    double Wn = 0;         //влажность древесины начальная
    double Wk = 0;         //влажность древесины конечная
    double V = 0;           //скорость воздухы в штабеле
    double x;
    
    String Poroda;   //порода древесины
    String Regim;    //категория режима
    
    //проверка полей на чистоту
    if (TextUtils.isEmpty(editText1.getText().toString())
        ||TextUtils.isEmpty(editText2.getText().toString())
        ||TextUtils.isEmpty(editText3.getText().toString())
        ||TextUtils.isEmpty(editText4.getText().toString())
        ||TextUtils.isEmpty(editText5.getText().toString())){
        return;
    }
    
    //читаем EditText
    S1 = Double.parseDouble(editText1.getText().toString());
    S2 = Double.parseDouble(editText2.getText().toString());
    L = Double.parseDouble(editText3.getText().toString());
    Wn = Double.parseDouble(editText4.getText().toString());
    Wk = Double.parseDouble(editText5.getText().toString());
    // берем значения из spinner
    V = Double.parseDouble(spinner1.toString());
    
    Poroda = spinner2.toString();
    Regim = spinner4.toString();
    
  //Расчет исходной продолжительности сушки
    if (S2>180) S2 = 180;
    TAU0 = (0.1372*Math.log10(S2)-0.5117)*Math.sqrt(S1)+(-6.0601*Math.log10(S2)+24.857)*S1+(70.808*Math.log10(S2)-238.49);
    
    //Расчет поправки по породе
    if (Poroda=="Лиственница")  {Ap = 1.0;}
    if (Poroda=="Сосна"|| Poroda=="Ель" || Poroda=="Кедр") {Ap = 0.46;}
    if (Poroda=="Осина" || Poroda=="Липа" || Poroda=="Тополь") {Ap = 0.57;}
    if (Poroda=="Береза" || Poroda=="Ольха") {Ap = 0.68;}
    
    //Расчет поправки по категории режима
    if (Regim=="Мягкий") 
      Ar = 1.7;
    else
      if (Regim=="Нормальный"){Ar = 1.0;} else Ar = 0.8;
    
    //Расчет поправки по скорости и режиму циркуляции воздуха
    if ((TAU0*Ar)<220 )
      Ac = 1.04770776095364*Math.exp(-1.53749231900265*Math.log10(V))*Math.exp((0.274957755144034*Math.log10(V)-0.00495739570336886)*Math.log10(TAU0*Ap));
    else
      Ac = 1.04770776095364*Math.exp(-1.53749231900265*Math.log10(V))*Math.exp((0.274957755144034*Math.log10(V)-0.00495739570336886)*Math.log10(220));
    //if radioButton1.==1
      //Ac = Ac*1.1;
    
  //Расчет поправки по влажности
    Aw = 5.3168700749486*Math.exp(-0.480083931444229*Math.log10(Wk))*Math.exp(0.0751319534439364*Math.log10(Wk)*Math.log10(Wn))-2.46459174646963;
   
    //Расчет поправки по категории качества сушки
      switch (v.getId()){
      case R.id.spinner3=0: Ak = 1.2;
      case R.id.spinner3=1: Ak = 1.15;
      case R.id.spinner3=2: Ak = 1.05;
      case R.id.spinner3=3: Ak = 1;
      
      }
    
  //Расчет поправки по длине досок
    x = L/S1;
    if (x<40) 
      Ad = -0.00000114*Math.exp(4*Math.log10(x))+0.00013125*Math.exp(3*Math.log10(x))-0.00542441*Math.exp(2*Math.log10(x))+0.09958402*(x)+0.22424482;
    else
      Ad = 1;
 
 
    //Расчет продолжительности сушки
    TAU = TAU0*Ar*Ac*Aw*Ak*Ad*Ap;
 
 
    //Вывод данных
 
    textView19.setText("="+TAU);
    textView20.setText("="+TAU/24);
    
    }
    
    
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
 
    public EditText getEditText1() {
        return editText1;
    }
 
 
    public void setEditText1(EditText editText1) {
        this.editText1 = editText1;
    }
 
 
    public EditText getEditText2() {
        return editText2;
    }
 
 
    public void setEditText2(EditText editText2) {
        this.editText2 = editText2;
    }
 
 
    public EditText getEditText3() {
        return editText3;
    }
 
 
    public void setEditText3(EditText editText3) {
        this.editText3 = editText3;
    }
 
 
    public EditText getEditText4() {
        return editText4;
    }
 
 
    public void setEditText4(EditText editText4) {
        this.editText4 = editText4;
    }
 
 
    public Button getButton1() {
        return button1;
    }
 
 
    public void setButton1(Button button1) {
        this.button1 = button1;
    }
 
 
    public Spinner getSpinner1() {
        return spinner1;
    }
 
 
    public void setSpinner1(Spinner spinner1) {
        this.spinner1 = spinner1;
    }
 
 
    public Spinner getSpinner2() {
        return spinner2;
    }
 
 
    public void setSpinner2(Spinner spinner2) {
        this.spinner2 = spinner2;
    }
 
 
    public Spinner getSpinner3() {
        return spinner3;
    }
 
 
    public void setSpinner3(Spinner spinner3) {
        this.spinner3 = spinner3;
    }
 
 
    public Spinner getSpinner4() {
        return spinner4;
    }
 
 
    public void setSpinner4(Spinner spinner4) {
        this.spinner4 = spinner4;
    }
 
 
    public TextView getTextView19() {
        return textView19;
    }
 
 
    public void setTextView19(TextView textView19) {
        this.textView19 = textView19;
    }
 
 
    public TextView getTextView20() {
        return textView20;
    }
 
 
    public void setTextView20(TextView textView20) {
        this.textView20 = textView20;
    }
 
   
}
А вот исходный код на Delphi:
Delphi
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
var
  TAU: real;        //продолжительность сушки
  TAU0: real;       //исходная продолжительность сушки (по лиственнице)
  Ar: real;         //коэффициенты, учитывающие категорию режимов сушки
  Ac: real;         //интенсивность циркуляции
  Aw: real;         //начальную и конечную влажность
  Ak: real;         //качество сушки
  Ad: real;         //длину материала
  Ap: real;         //породу древесины
  S1: real;         //толщина доски
  S2: real;         //ширина доски
  L: real;          //длина доски
  Wn: real;         //влажность древесины начальная
  Wk: real;         //влажность древесины конечная
  V: real;          //скорость воздухы в штабеле
  Poroda: string;   //порода древесины
  Regim: string;    //категория режима
  x, y, z : real;   //вспомогательные переменные
  i: integer;
implementation
 
{$R *.dfm}
 
     
procedure TForm1.Button1Click(Sender: TObject);
begin
 
 
  //Считывание исходных данных
  S1 := strtofloat(LabeledEdit2.Text);
  S2 := strtofloat(LabeledEdit3.Text);
  L  := strtofloat(LabeledEdit4.Text);
  Wn := strtofloat(LabeledEdit5.Text);
  Wk := strtofloat(LabeledEdit6.Text);
  V  := strtofloat(ComboBox4.Text);
  Poroda := ComboBox1.Text;
  Regim := ComboBox3.Text;
 
 
  //Расчет исходной продолжительности сушки
  if S2>180 then
    S2 := 180;
  TAU0 := (0.1372*LN(S2)-0.5117)*sqr(S1)+(-6.0601*LN(S2)+24.857)*S1+(70.808*LN(S2)-238.49);
 
 
  //Расчет поправки по породе
  if Poroda='лиственница' then Ap := 1.0;
  if (Poroda='сосна') or (Poroda='ель') or (Poroda='кедр') then Ap := 0.46;
  if (Poroda='осина') or (Poroda='липа') or (Poroda='тополь') then Ap := 0.57;
  if (Poroda='береза') or (Poroda='ольха') then Ap := 0.68;
 
  
  //Расчет поправки по категории режима
  if Regim='мягкий' then
    Ar := 1.7
  else
    if Regim='нормальный' then
      Ar := 1.0
    else Ar := 0.8;
 
 
  //Расчет поправки по скорости и режиму циркуляции воздуха
  if (TAU0*Ar)<220 then
    Ac := 1.04770776095364*exp(-1.53749231900265*ln(V))*exp((0.274957755144034*LN(V)-0.00495739570336886)*ln(TAU0*Ap))
  else
    Ac := 1.04770776095364*exp(-1.53749231900265*ln(V))*exp((0.274957755144034*LN(V)-0.00495739570336886)*ln(220));
  if RadioGroup1.ItemIndex=1 then
    Ac := Ac*1.1;
 
 
  //Расчет поправки по влажности
  Aw := 5.3168700749486*exp(-0.480083931444229*ln(Wk))*exp(0.0751319534439364*LN(Wk)*ln(Wn))-2.46459174646963;
 
 
  //Расчет поправки по категории качества сушки
  case ComboBox2.ItemIndex of
  0: Ak := 1.2;
  1: Ak := 1.15;
  2: Ak := 1.05;
  3: Ak := 1;
  else;
  end;
 
 
  //Расчет поправки по длине досок
  x := L/S1;
  if x<40 then
    Ad := -0.00000114*exp(4*ln(x))+0.00013125*exp(3*ln(x))-0.00542441*exp(2*ln(x))+0.09958402*(x)+0.22424482
  else
    Ad := 1;
 
 
  //Расчет продолжительности сушки
  TAU := TAU0*Ar*Ac*Aw*Ak*Ad*Ap;
 
 
  //Вывод данных
  Edit1.Text:= floattostrf(TAU,ffFixed,4,0);
  Edit2.Text:= floattostrf(TAU/24,ffFixed,2,1);
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2013, 19:04
Ответы с готовыми решениями:

Как изменится период колебаний маятника при перенесении его с Земли на Луну?
Как изменится период колебаний маятника при перенесении его с Земли на Луну? Масса Луны в 81 раз...

Проблемы при работе с NDK в Android Studio 1.0 и выше
Только не спамьте пожалуйста вконтакте вопрос реальный. Почему в Android Studio 1.0 и выше...

Ошибка при компилляции в Delphi 2007 кода assembler
Всем доброго времени суток. Есть программа на Delphi которая использует вставку на assembler: ...

Несогласованность кодировок в Delphi при получении исходного кода вэб-страницы
Получаю исходный код вэб-страницы через get-запрос. Код вэб страницы подсказывает, что кодировка...

5
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.04.2013, 20:05 2
Цитата Сообщение от morgan1391 Посмотреть сообщение
Читал уроки про этот выпадающий список, но как то все не ясно.
спрашивайте что не ясно...
0
0x5B4C322291BD52AE
96 / 96 / 0
Регистрация: 04.03.2013
Сообщений: 295
09.04.2013, 20:27 3
А лучше еще раз почитай
http://developer.android.com/g... inner.html
или
http://developer.alexanderklim... pinner.php
0
morgan1391
10.04.2013, 07:31 4
спрашивайте что не ясно...
не понятно как через переключатель выбирать из спиннера данные?

Этот кусок я так понимаю не правильный:
Java
1
2
3
4
5
       switch (v.getId()){
      case R.id.spinner3=0: Ak = 1.2;
      case R.id.spinner3=1: Ak = 1.15;
      case R.id.spinner3=2: Ak = 1.05;
      case R.id.spinner3=3: Ak = 1;
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
10.04.2013, 11:10 5
что за v вы используете не знаю, но у спинера есть такие методы:
Object getSelectedItem()
long getSelectedItemId()
int getSelectedItemPosition()
Return the position of the currently selected item within the adapter's data set
abstract View getSelectedView()
0
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
01.05.2013, 17:32 6
взгляните на мой пример у меня почти такой же

Добавлено через 56 секунд
spinner
0
01.05.2013, 17:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2013, 17:32
Помогаю со студенческими работами здесь

Непонятная ошибка при переводе в кода(безопасного извлечения флешек) с Delphi на С++
Предисловие: делаю попытку сделать безопасное извлечение флешки, перекопал инет,msdn в итоге вот...

Delphi XE3 при нажатии Enter не создается новая строка в редакторе кода
Delphi XE3 при нажатии Enter не создается новая строка в редакторе кода. При нажатии на клавиатуре...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru