![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод из строки в число [D7, XP]
_vl_ © (2007-05-22 17:06:00)Есть задача, надо из строкового представления перевести в число.
Есить код:
var
year: integer;
str: string[4];
begin
str := Copy(s, 7, 4); // здесь str принимает значение '1984'
year := StrToInt(str); // а здесь он ничего не преобразует
end;
Никаких ошибок не выдает, просто переменная year не содержит никакого значения.
В чем может быть проблема?
{RASkov} (2007-05-22 23:26:00) [1]> [20] Anatoly Podgoretsky © (22.05.07 20:59)
> деление на 0 это не ошибка
А что это? Прикол?) Или...
> Уже давно другая логика,
...это имелось ввиду для конкретной ветки?
Johnmen (2007-05-22 21:05:00) [2]>>Ну ты навёл-то после выполнения строки кода с присваиванием? :)))))))
>
>_vl_ (22.05.07 18:07) [18]
>
>да
Т.е. когда процедура [0] уже выполнена, т.е. когда локальные переменные уже деинициализированы и несуществуют....:)))
Anatoly Podgoretsky (2007-05-22 20:59:00) [3]> {RASkov} (22.05.2007 20:16:19) [19]
Уже давно другая логика, деление на 0 это не ошибка
{RASkov} (2007-05-22 20:16:00) [4]> [18] _vl_ (22.05.07 18:07)
Выполни вот этот код с оптимизатором, и удивись, что при нажатии на кнопку даже сообщение об ошибке не показывается...
procedure TForm1.Button1Click(Sender: TObject);
var X, Y, Z: Integer;
begin
X:=0;
Y:=5;
Z:=Y div X;
end;
А ведь должно по логике... Так же и наводом мышки тоже будешь получать нули....
А вот так все ок:
procedure TForm1.Button1Click(Sender: TObject);
var X, Y, Z: Integer;
begin
X:=0;
Y:=5;
Z:=Y div X;
Tag:=Z;
end;
А казалось бы ничего и не поменялось...
Твой код из [0] копия моего первого примера в этом сообщении..
_vl_ (2007-05-22 18:07:00) [5]да
Johnmen (2007-05-22 17:32:00) [6]
> _vl_ (22.05.07 17:29) [15]
> >johnmenНавел на эту переменную мышку и там показывается
> что содержится в переменной
Ну ты навёл-то после выполнения строки кода с присваиванием? :)))))))
_vl_ (2007-05-22 17:31:00) [7]Еще раз всем спасибо.
_vl_ (2007-05-22 17:29:00) [8]>johnmen
Навел на эту переменную мышку и там показывается что содержится в переменной
Плохиш (2007-05-22 17:29:00) [9]
> _vl_ (22.05.07 17:28) [12]
> Отключил оптимизатор, идобавил цикл с использованием этой
> переменной
Рыдал, можешь включать оптимизатор взад :-))
_vl_ (2007-05-22 17:28:00) [10]Отключил оптимизатор, и добавил цикл с использованием этой переменной, все оказывается работает.
Спасибо всем кто откликнулся на такой глупый вопрос.
Плохиш (2007-05-22 17:28:00) [11]
> Johnmen © (22.05.07 17:24) [11]
> Да вообще, крайне любопытно, каким образом автор увидел
> (унюхал?), что переменная year не содержит значения?
Мышку на переменную навёл ;-)
Johnmen (2007-05-22 17:24:00) [12]Да вообще, крайне любопытно, каким образом автор увидел (унюхал?), что переменная year не содержит значения?
Johnmen (2007-05-22 17:23:00) [13]
> Плохиш © (22.05.07 17:16) [7]
> Что-то мне подсказывает, что оптимизатор и эту строчку выкинет :-))
Не посмеет...:)
Плохиш (2007-05-22 17:20:00) [14]
> _vl_ (22.05.07 17:19) [8]
> А как отключить оптимизатор?
В свойствах проекта, на закладке компилятора.
_vl_ (2007-05-22 17:19:00) [15]А как отключить оптимизатор?
Плохиш (2007-05-22 17:16:00) [16]
> Johnmen © (22.05.07 17:14) [6]
Что-то мне подсказывает, что оптимизатор и эту строчку выкинет :-))
Johnmen (2007-05-22 17:14:00) [17]Просто надо добавить ещё одну бессмысленную строчку:
if year=0 then;
:)))
Плохиш (2007-05-22 17:13:00) [18]
> _vl_ (22.05.07 17:06)
Кстати, рекомендую сообщения и предупреждения компилятора почитать, много нового о себе узнаешь...
Amoeba (2007-05-22 17:12:00) [19]
> переменная year не содержит никакого значения.
А теперь расскажи честн ому народу, как пришел к такому выводу?
Плохиш (2007-05-22 17:11:00) [20]
> Никаких ошибок не выдает, просто переменная year не содержит
> никакого значения.
> В чем может быть проблема?
Оптимизатор отключи...