Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 088

/ вопрос открыт /

Здравствуйте!
У меня возникла такая проблема. Для компонента UpDown, ассоциированного с Edit1 (в котором записан 2009 год) получается при перелистывании 2 009, т.е. добавляется пробел и переменная считывается как текстовая). Как исправить, чтобы можно было вводить с клавиатуры год в некоторую переменную для всевозможных расчетов? Если стирать пробел, то все работает (иначе выскакивает сообщение, что эта переменная не есть целая).

Таран Виктория Николаевна Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Таран Виктория Николаевна (статус: Посетитель)
Вопрос отправлен: 14 августа 2009, 19:42
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Таран Виктория Николаевна!
Проверил. Это особенность компонента TUpDown. Проверял и на 2007, и на 2009 делфи.
Но я подумал и нашел четыре(!!!) решения для Вас. Выбитайте:)
Первое. выставить одно свойство
UpDown1.Thousands := false; И всё.
Второе. Воспользоваться компонентом TSpinEdit. Возможно это то, что Вам надо. Дополнительный плюс - теперь не надо использовать StrToInt - там есть свойство Value.
Третий. малость извращенный. писать так
IntToStr(StrToInt(StringReplace(Edit1.text,#160, '',[rfReplaceAll])))
вообще то там должно быть #32 (код пробела). Но почему там #160 - предлагаю разобраться самостоятельно. Решётка в начале - это просто способ написать chr(160) - то есть выбрать символ с таблицы символов по номеру. обратное преобразование - функция chr.
и на последок. Не мучиться и брать значение не с едита, а у UpDown. вот так просто
UpDown1.Position. Оно уже целое, поэтому преобразовывать не нужно. Правда есть одна проблема- это не 4 байтовое целое, а двухбайтовое .... Вам решать.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 15 августа 2009, 00:11
Оценка за ответ: 5

Комментарий к оценке: Спасибо! До четвертого варианта я додумалась, но попробовать не успела, оторвали некоторые проблемы. А тип Word меня вполне устраивает.
Еще раз спасибо большое!!!!!!!!!!
P.S. Но мне еще понравился и первый вариант (а TSprinEdit я вообще-то не использовала раньше, надо тоже попробовать)

Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 15 августа 2009, 22:43; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 14 августа 2009, 19:56 [#1]:

Странное поведение. вообще то не должно так быть. Скомпилированное приложение на других компьютерах ведёт себя так же?
Галочка "подтверждения прочтения" - вселенское зло.
Таран Виктория Николаевна

Таран Виктория Николаевна (статус: Посетитель), 14 августа 2009, 20:39 [#2]:

На других компьютерах не пробовала. У меня установлен Delphi 2009. Может, это у него такие заморчки?
Таран Виктория Николаевна

Таран Виктория Николаевна (статус: Посетитель), 15 августа 2009, 22:06 [#3]:

Как ни странно, но сработал именно вариант с тысячей (первый), четвертый все равно давал ошибку.
Еще раз огромное спасибо!!!!!!!!!
Вадим К

Вадим К (статус: Академик), 15 августа 2009, 22:43 [#4]:

странно, как это 4 вариант не сработал... просто не понимаю.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:42
Выполнено за 0.02 сек.