Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2013, 18:22   #21
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Кстати, в вашем же видео на 00:08 при стерании "9" внезапно появилаяь "1".
что значит внезапно? Смотрим обработчик ...функа strtofloatdef(), который не допускает исключений и подставляет эту единицу, а исключение - это нецифровое значение.

- в общем, мне это все надоело -
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 03.02.2013 в 18:28.
raxp вне форума Ответить с цитированием
Старый 03.02.2013, 18:36   #22
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
что значит внезапно?
Внезапно для пользователя. Он "1" не вводил и знаете-ли не может
Цитата:
Смотрим обработчик ...функа strtofloatdef()
и тем более ему незачем понимать логику работы кода. Ему нужно адекватное поведение программы.

Цитата:
ввел и что, обработчик исключений сработал.
При чем здесь обработчик. При нажатии [Вackspace] в эдите должно остаться "001". Потом нажму [2] и получится "2001". Я не хочу еще раз вводить "00". Они уже там есть. Зачем программа их удалила? (это и есть неодекватное поведение). Я пользователь, я этого не хочу (этого не хочет и ТС (чёт, кстати, он молчит)).
Где в "нормальных" широкораспространенных программах вы видели, чтобы вводимые данные редактировались в момент их ввода. Максимум, что можно, это выдать пользователю предупреждение о их некорректности, и то только после окончания их ввода.

Последний раз редактировалось Sibedir; 03.02.2013 в 20:00.
Sibedir вне форума Ответить с цитированием
Старый 03.02.2013, 19:00   #23
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Где в "нормальных" широкораспространенных программах вы видели, чтобы вводимые данные редактировались в момент их ввода.
Не поверишь - во многих. В IDE Делфи например
Да я и сам стараюсь иногда писать так чтоб программа при вводе сама корректировала введенное.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.02.2013, 19:11   #24
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не поверишь - во многих. В IDE Делфи например
В том то и дело, что
(Кстати, Stilet, а где это в Делфи?)

Цитата:
Сообщение от Stilet Посмотреть сообщение
Да я и сам стараюсь иногда писать так чтоб программа при вводе сама корректировала введенное.
Т.е. удаление программой двух нулей, введенных пользователем и нужных ему, (это я про 1001 и 2001) тоже считаешь нормальным?

Добавлено --------------------------------------------------------------------------------------
Stilet, ты наверное имел ввиду автоматическую подстановку при вводе значений в инспекторе объектов. Согласен, есть такое. Забыл. Но там как-раз всё корректно работает и реакция программы соответствует ожиданиям пользователя. Подстановка значения происходит лишь тогда, когда иных вариантов ввода чем выбранный программой не остаётся. Глупо предполагать, что введя "f" пользователь (в нашем случае программист) хочет ввести "true". Такое поведение допустимо лишь при фиксированном наборе допустимых значений. Скажем, при вводе в поле WindowState "wsmaximized" Делфи автоматом исправит его на "wsMaximized", что пользователю и нужно. Или при вводе "wsm" заменит на "xsM", что не влияет на результат. Или при вводе "wsMa" предложит дописать "ximized", что не мешает вводу пользователя. Но при вводе "ximized" или даже "imized" не предложит иных вариантов и не станет ни чего заменять. Лишь по OnExit вернет старое значение или по нажатию Enter заявит о неправильности ввода данных.
С числами такое не допустимо. Ведь "001" может в итоге оказаться и "00123" и "1001". Если у программы нет четкого обоснования подмены вводимых пользователем данных, ей не нужно ни чего менять. По крайней мере в момент ввода. Знаете как бесит, когда OpenOffice Calc думает (за меня), что "1.1" - это "01.01.2013". Exel, к слову сказать, ведет себя в этом случае корректно: если год, как может ему показаться, не указан, то он не интерпритирует эту запись как дату. Он вполне справедливо считает, что для принятия решения за пользователя данных явно недостаточно.

Последний раз редактировалось Sibedir; 03.02.2013 в 21:07.
Sibedir вне форума Ответить с цитированием
Старый 03.02.2013, 21:36   #25
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но там как-раз всё корректно работает и реакция программы соответствует ожиданиям пользователя.
О! Вот оно! Ключ ко всему.
Смысл не в том что это плохо, а в том что в кривых руках это нехорошо
Цитата:
Т.е. удаление программой двух нулей, введенных пользователем и нужных ему, (это я про 1001 и 2001) тоже считаешь нормальным?
Надо логику задания знать чтоб ответить на такой вопрос.
Приведу пример из опыта: Вводятся рубли. Сумма. Вводятся как попало, например 2,25
А бывает что и 2.25. Или вообще 2,25р.
Впрочем юзера иногда и так чудят: 02,25.

Вопрос: Если криворукий АБД создал таблицу где сумма - поле char(10), и перестраивать ее ни-ни, нужно ли в программе конвертировать все что введено в правильное число, которое потом должно попадать в эту таблицу или пес с ним - АБД виноват пусть исправляет (моя хата с краю идите на...)?

P.S. А еще такой момэнт: потом эти поля кастуются и в случае исключения прога падает на задние лапки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.02.2013, 21:48   #26
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Понятно, что в жизни всякое случается. Я тоже про это и говорил. Это не простой вопрос, здесь нужно грамотно строить логику в зависимости от конкретной задачи.
Ну при чем здесь вопрос ТС'а? Вопрос поставлен конкретно:
Цитата:
надо чтобы ввел в Edit1 текст, во 2 изменился текст, но не менялся в 1, в то же время чтобы потом во 2 ввести текст, и изменился в 1, не меняясь во 2
И решение здесь в том, чтобы исключить программное изменение значения в эдите, который находится в фокусе (в который пользователь вводит значение). А вариант, предложенный raxp и поддержанный тобой решает совершенно иную задачу: определение источника события.

P.S.: А реплика про двойку с минусом это вообще сарказм был. Ну типа шутка такая, мол: Ага, попались профессионалы. Дело всё в том, что (на мой, конечно же, личный и субъективный взгляд) вы просто не поняли вопроса.

Последний раз редактировалось Sibedir; 03.02.2013 в 21:53.
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертер sent161rus Общие вопросы .NET 1 26.08.2011 17:02
Конвертер БД Vlaar Фриланс 3 22.12.2010 09:06
Конвертер VanHelsing Софт 0 22.07.2010 11:46
Конвертер на С++ VanHelsing Общие вопросы C/C++ 5 21.07.2010 15:01
конвертер malevich Общие вопросы Delphi 10 14.02.2007 23:19