![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
Подскажите можно ли с помощью данного оператора проверять является ли возвращаемый результат или переменная тем или иным типом данных.
Я имею ввиду string,integer. |
|||
|
||||
| supervladislav |
|
||||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
что-то вроде
мне нужно узнать является ли результат типа стринг ,данную задачу можно решить с помощью оператора is
|
||||
|
|||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Дружище, выражая исключительно свое мнение и действуя в состоянии небольшого аффекта под воздействием энного количества пива, вынужден сообщить нижеследующее - ты изрядно достал как минимум по двум причинам.
Первая: все советы тебе отложить форум в сторону и почитать какую-нибудь книгу пропали втуне. Ибо если бы ты почитал первую главу любой книжки, то знал бы, что Delphi - язык строгой типизации и в нем фокусы типа "string = integer" не работают. И самое главное - обо всем этом заботится компилятор, который своевременно даст по рукам за подобное. Резюмируя первую причину, если поле lcbtd.Text типа string, то компилятор не даст совершить с ним ничего не-стрингового. Всякие is и as здесь излишни. Я не думаю, что ты успел добраться до RTTI, Variant-ов или работы с указателями. Вторая: все пожелания излагать задачу, которую нужно решить, а не странным образом изложенный непонятный кусок из нее, опять-таки канули в Лету. Интересно, кто на этот раз возьмется решать "xyz"? Модераторам: готов понести наказание за это высказывание, но сил молчать больше нет. |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Возвращаемый чем? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Нет. Оператор is работает только с классами. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Это опять не задача. Это опять "глупый" вопрос! lcbtd.Text вседа имеет тип String. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
Ой я имел ввиду текстовое поле типа Edite
Добавлено @ 03:25 northener, Это не глупый вопрос так как мне не очень понятно ,как в чётко типизированном языке проверить является ли значение добовляемое в поле edite числовым или числовым дробным. Я теперь понимаю ,что не через тип. Но как регулярным выражением ,неучто в такой мощной машине как Делпхи Нет другово варианта? Это сообщение отредактировал(а) supervladislav - 10.10.2012, 03:31 |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
В "чётко типизированном языке в поле Edit" всегда пишется текст! Только текст! И ничего кроме текста! Это сообщение отредактировал(а) northener - 10.10.2012, 03:35 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
northener, а если данные этого поля будут складываться или вычитаться?
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
supervladislav, почитайте, что такое строки в делфи. вычитаться строки не могут. но строку всегда можно ПОПРОБОВАТЬ перевести в число...
Это сообщение отредактировал(а) MetalFan - 10.10.2012, 07:37 -------------------- There are always someone smarter than you... |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Тогда тебе поможет одна из функций перевода, например, StrToInt. Это сообщение отредактировал(а) Данкинг - 10.10.2012, 11:07 -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Delvish |
|
|||
![]() oO ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 13.12.2006 Репутация: нет Всего: 4 |
||||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
|
|||
|
||||
| Delvish |
|
|||
![]() oO ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 13.12.2006 Репутация: нет Всего: 4 |
ну или так
Это сообщение отредактировал(а) Delvish - 10.10.2012, 14:27 |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
||||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
Delvish, когда человек введёт текст ,что будет ,как отследить момент когда человек в функцию вводит текст
|
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Можешь на этапе нажатия клавиш на Edit отлавливать. Можешь проверять с помощью вышеуказанных способов отлова ошибок. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
Какой то поток сознания. Рекомендую - Метод_утёнка. |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
superVad, Я просто думал ,что тут тоже программисты и смогут поделиться хотябы той литературой которую они читали.
С большим колличеством примеров , но такого я не нашёл. Мне было не очень понятно какие данные проверять ,чтобы выяснить что пользователь ввёл не число ? Это сообщение отредактировал(а) supervladislav - 10.10.2012, 22:27 |
|||
|
||||
| Данкинг |
|
||||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
-------------------- There's nothing left but silent epitaphs. |
||||
|
|||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
Данкинг, а где сам цикл if else?
|
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Зачем здесь "цикл", как ты его называешь, if else? Здесь если strtoint не вызывает ошибки, то выводится "Введено число". Если же возникает ошибка, то программа переходит в блок, следующий после except, и выводится " "Ошибка преобразования".
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Но Val - это "ещё более стандартная" процедура Дельфи. Скажу более. Она использует тот самый Compile Magic. А функция TryStrToInt как раз и использует процедуру Val. См. исходники Дельфи. В них тоже самое, что в посте Delvish, но гораздо элегантнее. И без ошибки в типе второго параметра. P.S. Функции TryStrTo... значительно менее функциональны, чем процедура Val. Во-первых они преобразовывают строку только в жестко заданный тип числовой переменной. А во-вторых (и в этом особый цимус) процедура Val показывает в каком символе входного параметра-строки ошибка! Что даёт возможность показать пользователю, где он при ручном вводе сделал ошибку. Ну точнее - где он сделал первую из своих ошибок ввода. Это сообщение отредактировал(а) northener - 11.10.2012, 00:55 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Тут тоже программисты. Но далеко не все из них учились методом "подгонки готовых примеров под свою задачу". Даже скажу что таких - меньшинство. Я знаю только одного. Это сообщение отредактировал(а) northener - 11.10.2012, 01:27 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Использование StrToXXX когда нет уверенности что в строке число в нужном формате это нецелевое использование исключений, годится только для плохих студентов, которым сдать лабу и забыть. Правильный вариант TryStrToXXX, ну или Val, если вы не можете смириться с показаниями календаря
-------------------- Обижено школьников: 8 |
|||
|
||||
| Delvish |
|
|||
![]() oO ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 13.12.2006 Репутация: нет Всего: 4 |
это я и имел ввиду - TryStr.. основывается на старом-добром Val, в котором 2й параметр можно задать натуральным либо вещественным типом в зависимости от того, какой результат хочется увидеть. и да, плюс ко всему - это третий параметр с порядковым номером ошибочного символа, если он присутствует |
|||
|
||||
| northener |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Вот ведь как забавно!
Исторически в турбо паскале существовала процедура Val не вызывавшая ошибок времени исполнения (runtime error). При рождении Дельфи для этой процедуры сделали обертку, которая стала такие ошибки (теперь они называются exception) выдавать:
И понадобилось еще лет 10, чтобы к той самой процедуре Val сделали новую обертку, которая вновь не вывает ошибок:
Неисповедимы пути твои, господи. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
||||
|
|||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
northener, Если человек изучает с ноля с минимум примеров , а вы изучали сами или вас застовляли?
Добавлено через 22 секунды ПРостой толковой литературы маловато пока. |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Меня никто не застАвлял. Учился почти совсем без примеров. Но Аглицкий Технический знал, так что мог читать хелп. Если он был, конечно P.S. Да ради бога. Изучай с ноля и без примеров. Но, пожалуйста, пойми одну простую вещь. Если мне когда-нибудь придётся что-то делать на php, я не стану на форумах задавать "умные" вопросы. Я просто скажу,что php я не знаю. А мне нужно сделать, чтобы моя програмима делала то-то и то-то. Что из некоторых соображений я пытаюсь сделать так (тут кусок кода), но у меня не получается. Помогите исправить мои ошибки! -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| spindul |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 30.7.2011 Репутация: нет Всего: нет |
||||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Не надо её брать, пожалуйста! Эта книга написана троешником, чем сам автор даже гордится. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| spindul |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 30.7.2011 Репутация: нет Всего: нет |
Да она написана троешником, но по крайней мере там есть примеры и разжевано всё чуть ли не досконально, я не говорю что это лучшая книга по Delphi, но для начала она сойдет. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Ничего там не разжевано
-------------------- Обижено школьников: 8 |
|||
|
||||
| spindul |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 30.7.2011 Репутация: нет Всего: нет |
||||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Ну тогда дай другой пример учебника по Дельфи на русском. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| spindul |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 30.7.2011 Репутация: нет Всего: нет |
||||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
У автора темы как раз есть проблемы. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |