Есть написанная программа на 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); |
|