Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 9
1

Значение переменной типа real не меняется

18.11.2012, 15:54. Показов 951. Ответов 6
Метки нет (Все метки)

Есть код:
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
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
Case Combobox1.Itemindex of
    0: m1:= 1.008;
    1: m1:= 4.003;
    2: m1:= 6.941;
    3: m1:= 9.012;
    4: m1:= 10.811;
    5: m1:= 12.011;
    6: m1:= 14.007;
    7: m1:= 15.999;
    8: m1:= 18.998;
    9: m1:= 20.179;
    10: m1:= 22.990;
    11: m1:= 24.312;
    12: m1:= 26.982;
    13: m1:= 28.086;
    14: m1:= 30.974;
    15: m1:= 32.064;
    16: m1:= 35.453;
    17: m1:= 39.948;
    18: m1:= 39.102;
    19: m1:= 40.080;
    20: m1:= 44.956;
    21: m1:= 47.900;
    22: m1:= 50.941;
    23: m1:= 51.996;
    24: m1:= 54.938;
    25: m1:= 55.847;
    26: m1:= 58.933;
    27: m1:= 58.700;
    28: m1:= 63.546;
    29: m1:= 65.370;
    30: m1:= 69.720;
    31: m1:= 72.590;
    32: m1:= 74.922;
    33: m1:= 78.960;
    34: m1:= 79.904;
    35: m1:= 83.800;
    36: m1:= 85.468;
    37: m1:= 87.620;
    38: m1:= 88.906;
    39: m1:= 91.220;
    40: m1:= 92.906;
    41: m1:= 95.940;
    42: m1:= 99.000;
    43: m1:= 101.070;
    44: m1:= 102.910;
    45: m1:= 106.400;
    46: m1:= 107.868;
    47: m1:= 112.410;
    48: m1:= 114.820;
    49: m1:= 118.690;
    50: m1:= 121.750;
    51: m1:= 127.600;
    52: m1:= 126.905;
    53: m1:= 131.300;
    54: m1:= 132.905;
    55: m1:= 137.340;
    56: m1:= 138.906;
    57: m1:= 178.490; //72 ýëåìåíò
    58: m1:= 180.948;
    59: m1:= 183.850;
    60: m1:= 186.200;
    61: m1:= 190.200;
    62: m1:= 192.220;
    63: m1:= 195.090;
    64: m1:= 196.967;
    65: m1:= 200.590;
    66: m1:= 204.370;
    67: m1:= 207.190;
    68: m1:= 208.980;
    69: m1:= 210.000;
    70: m1:= 210.000;
    71: m1:= 222.000;
    72: m1:= 223.000;
    73: m1:= 226.000;
    74: m1:= 227.000;
    75: m1:= 261.000;
    76: m1:= 262.000;
    77: m1:= 263.000;
    78: m1:= 262.000;
    79: m1:= 265.000;
    80: m1:= 266.000;
  end;
end;
Затем идёт вывод значения m1:
Delphi
1
2
3
procedure TForm1.Button1Click(Sender: TObject);
showmessage (FloatToStr(m1));
end;
Сам вопрос: почему всегда m1 = 0? Вернее так: почему в showmessage всегда выводится 0? (m1 -- глобальная переменная типа Real)
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2012, 15:54
Ответы с готовыми решениями:

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

Проверка значения переменной типа real
как проверить не пустая ли переменная типа real? делал так, но ругается на нессответствие...

Список Tlist переменной типа real, как создать?
Имеется код программы: unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...

Каксделать что бы переменная могла принимать значение типа real и значение nil?
Допустим есть функция : function kvkor(a:real; b:real) :real; begin If a = nil then Begin ......

6
156 / 299 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
18.11.2012, 16:01 2
Потому что Case of работает на текст, а не на числа, переведи положение ComboBox в текстовую переменую и всё будет.
0
Модератор
3476 / 2600 / 740
Регистрация: 19.09.2012
Сообщений: 7,966
18.11.2012, 16:02 3
Вместо события OnClick:
Delphi
1
procedure TForm1.ComboBox1Click(Sender: TObject);
используй OnChange:
Delphi
1
procedure TForm1.ComboBox1Change(Sender: TObject);
Добавлено через 57 секунд
Цитата Сообщение от саша40 Посмотреть сообщение
Потому что Case of работает на текст, а не на числа, переведи положение ComboBox в текстовую переменую и всё будет.
Не гони пургу.
1
156 / 299 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
18.11.2012, 16:02 4
Цитата Сообщение от gorfil Посмотреть сообщение
Вместо события OnClick:
Delphi
1
procedure TForm1.ComboBox1Click(Sender: TObject);
используй OnChange:
Delphi
1
procedure TForm1.ComboBox1Change(Sender: TObject);
И чем это поможет(Автору)?
0
Модератор
3476 / 2600 / 740
Регистрация: 19.09.2012
Сообщений: 7,966
18.11.2012, 16:13 5
Цитата Сообщение от gorfil Посмотреть сообщение
Вместо события OnClick:
Delphi
1
procedure TForm1.ComboBox1Click(Sender: TObject);
используй OnChange:
Delphi
1
procedure TForm1.ComboBox1Change(Sender: TObject);
Хотя оба варианта должны работать. Возможно проблема в другом.
Попробуй перед case поставить showmessage (IntToStr(Combobox1.Itemindex)); и посмотреть его значения.
0
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 9
18.11.2012, 16:46  [ТС] 6
Цитата Сообщение от gorfil Посмотреть сообщение
Вместо события OnClick:
Код Delphi
1
procedure TForm1.ComboBox1Click(Sender: TObject);
используй OnChange:
Код Delphi
1
procedure TForm1.ComboBox1Change(Sender: TObject);
Я тут было начал писать «пробовал, не помогло», но решил попытаться ещё раз. И заработало! ^_^ Спасибо.

Добавлено через 15 минут
Прошу прощения за то что вновь поднял эту тему. Дело тут вот в чём:
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
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
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Case Combobox1.Itemindex of
    0: m1:= 1.008;
    1: m1:= 4.003;
    2: m1:= 6.941;
    3: m1:= 9.012;
    4: m1:= 10.811;
    5: m1:= 12.011;
    6: m1:= 14.007;
    7: m1:= 15.999;
    8: m1:= 18.998;
    9: m1:= 20.179;
    10: m1:= 22.990;
    11: m1:= 24.312;
    12: m1:= 26.982;
    13: m1:= 28.086;
    14: m1:= 30.974;
    15: m1:= 32.064;
    16: m1:= 35.453;
    17: m1:= 39.948;
    18: m1:= 39.102;
    19: m1:= 40.080;
    20: m1:= 44.956;
    21: m1:= 47.900;
    22: m1:= 50.941;
    23: m1:= 51.996;
    24: m1:= 54.938;
    25: m1:= 55.847;
    26: m1:= 58.933;
    27: m1:= 58.700;
    28: m1:= 63.546;
    29: m1:= 65.370;
    30: m1:= 69.720;
    31: m1:= 72.590;
    32: m1:= 74.922;
    33: m1:= 78.960;
    34: m1:= 79.904;
    35: m1:= 83.800;
    36: m1:= 85.468;
    37: m1:= 87.620;
    38: m1:= 88.906;
    39: m1:= 91.220;
    40: m1:= 92.906;
    41: m1:= 95.940;
    42: m1:= 99.000;
    43: m1:= 101.070;
    44: m1:= 102.910;
    45: m1:= 106.400;
    46: m1:= 107.868;
    47: m1:= 112.410;
    48: m1:= 114.820;
    49: m1:= 118.690;
    50: m1:= 121.750;
    51: m1:= 127.600;
    52: m1:= 126.905;
    53: m1:= 131.300;
    54: m1:= 132.905;
    55: m1:= 137.340;
    56: m1:= 138.906;
    57: m1:= 178.490; //72 ýëåìåíò
    58: m1:= 180.948;
    59: m1:= 183.850;
    60: m1:= 186.200;
    61: m1:= 190.200;
    62: m1:= 192.220;
    63: m1:= 195.090;
    64: m1:= 196.967;
    65: m1:= 200.590;
    66: m1:= 204.370;
    67: m1:= 207.190;
    68: m1:= 208.980;
    69: m1:= 210.000;
    70: m1:= 210.000;
    71: m1:= 222.000;
    72: m1:= 223.000;
    73: m1:= 226.000;
    74: m1:= 227.000;
    75: m1:= 261.000;
    76: m1:= 262.000;
    77: m1:= 263.000;
    78: m1:= 262.000;
    79: m1:= 265.000;
    80: m1:= 266.000;
  end;
end;
 
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
  Case Combobox1.Itemindex of
    0: m2:= 1.008;
    1: m2:= 4.003;
    2: m2:= 6.941;
    3: m2:= 9.012;
    4: m2:= 10.811;
    5: m2:= 12.011;
    6: m2:= 14.007;
    7: m2:= 15.999;
    8: m2:= 18.998;
    9: m2:= 20.179;
    10: m2:= 22.990;
    11: m2:= 24.312;
    12: m2:= 26.982;
    13: m2:= 28.086;
    14: m2:= 30.974;
    15: m2:= 32.064;
    16: m2:= 35.453;
    17: m2:= 39.948;
    18: m2:= 39.102;
    19: m2:= 40.080;
    20: m2:= 44.956;
    21: m2:= 47.900;
    22: m2:= 50.941;
    23: m2:= 51.996;
    24: m2:= 54.938;
    25: m2:= 55.847;
    26: m2:= 58.933;
    27: m2:= 58.700;
    28: m2:= 63.546;
    29: m2:= 65.370;
    30: m2:= 69.720;
    31: m2:= 72.590;
    32: m2:= 74.922;
    33: m2:= 78.960;
    34: m2:= 79.904;
    35: m2:= 83.800;
    36: m2:= 85.468;
    37: m2:= 87.620;
    38: m2:= 88.906;
    39: m2:= 91.220;
    40: m2:= 92.906;
    41: m2:= 95.940;
    42: m2:= 99.000;
    43: m2:= 101.070;
    44: m2:= 102.910;
    45: m2:= 106.400;
    46: m2:= 107.868;
    47: m2:= 112.410;
    48: m2:= 114.820;
    49: m2:= 118.690;
    50: m2:= 121.750;
    51: m2:= 127.600;
    52: m2:= 126.905;
    53: m2:= 131.300;
    54: m2:= 132.905;
    55: m2:= 137.340;
    56: m2:= 138.906;
    57: m2:= 178.490; //72 ýëåìåíò
    58: m2:= 180.948;
    59: m2:= 183.850;
    60: m2:= 186.200;
    61: m2:= 190.200;
    62: m2:= 192.220;
    63: m2:= 195.090;
    64: m2:= 196.967;
    65: m2:= 200.590;
    66: m2:= 204.370;
    67: m2:= 207.190;
    68: m2:= 208.980;
    69: m2:= 210.000;
    70: m2:= 210.000;
    71: m2:= 222.000;
    72: m2:= 223.000;
    73: m2:= 226.000;
    74: m2:= 227.000;
    75: m2:= 261.000;
    76: m2:= 262.000;
    77: m2:= 263.000;
    78: m2:= 262.000;
    79: m2:= 265.000;
    80: m2:= 266.000;
  end;
end;
Теперь переменная m2 = 0. Причём обе процедуры абсолютно эквивалентны, просто работают с разными комобоксами и переменными.
0
Модератор
3476 / 2600 / 740
Регистрация: 19.09.2012
Сообщений: 7,966
18.11.2012, 17:14 7
Попробуй перед case поставить ShowMessage (IntToStr(Combobox2.Itemindex)); и посмотреть его значения.
Ты вообще какие-либо значения выбираешь в Combobox'ах проведением расчетов?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2012, 17:14

Метод Симпсона - попытка присвоить значение integer переменной типа real
Как исправить ошибку? В строке N2:= n/2; пишет попытка присвоить значение integer переменной типа...

Попытка присвоить переменной типа integer выражение типа real
Здравствуйте форумчане. Написала программу для замены элементов массива после максимального...

Ошибка: присвоить переменной типа real выражение типа boolean
program graf; var x, y: real; begin writeln('Input x= '); readln(x); begin if (x >...

Перенос значения переменной типа Real в переменную типа Integer
Как сделать так чтобы переменная типа integer приняло число которое было в переменной типа real???


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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