Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строку в число 
:(
    Опции темы
supervladislav
Дата 10.10.2012, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Delvish, когда человек введёт текст ,что будет ,как отследить момент когда человек в функцию вводит текст 
PM MAIL   Вверх
Данкинг
Дата 10.10.2012, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(supervladislav @  10.10.2012,  19:20 Найти цитируемый пост)
как отследить момент когда человек в функцию вводит текст  

Можешь на этапе нажатия клавиш на Edit отлавливать. Можешь проверять с помощью вышеуказанных способов отлова ошибок.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
superVad
Дата 10.10.2012, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Цитата(supervladislav @  10.10.2012,  17:20 Найти цитируемый пост)
Delvish, когда человек введёт текст ,что будет ,как отследить момент когда человек в функцию вводит текст 

Какой то поток сознания.
Рекомендую - Метод_утёнка.
PM MAIL   Вверх
supervladislav
Дата 10.10.2012, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



superVad, Я просто думал ,что тут тоже программисты и смогут поделиться хотябы той литературой которую они читали.
С большим колличеством примеров , но такого я не нашёл.
Мне было не очень понятно какие данные проверять ,чтобы выяснить что пользователь ввёл не число ?

Это сообщение отредактировал(а) supervladislav - 10.10.2012, 22:27
PM MAIL   Вверх
Данкинг
Дата 10.10.2012, 23:08 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(supervladislav @  10.10.2012,  23:21 Найти цитируемый пост)
Мне было не очень понятно какие данные проверять ,чтобы выяснить что пользователь ввёл не число ?

Код

try
 sss:=strtoint(edit1.text);
 showmessage('Введено число');
except
 showmessage('Ошибка преобразования');
end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 10.10.2012, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Данкинг, а где сам цикл if else?
PM MAIL   Вверх
Данкинг
Дата 10.10.2012, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Зачем здесь "цикл", как ты его называешь, if else? Здесь если strtoint не вызывает ошибки, то выводится "Введено число". Если же возникает ошибка, то программа переходит в блок, следующий после except, и выводится " "Ошибка преобразования".


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
northener
Дата 11.10.2012, 00:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(superVad @  10.10.2012,  17:21 Найти цитируемый пост)
Можно и машинными кодами писать smile
Но все же - TryStrToInt - это стандартная делфевая функция. 

Но Val - это "ещё более стандартная" процедура Дельфи.  Скажу более. Она использует тот самый Compile Magic. А функция TryStrToInt как раз и использует процедуру Val. См. исходники Дельфи. В них тоже самое, что в посте Delvish, но гораздо элегантнее. И без ошибки в типе второго параметра.

P.S.
  Функции TryStrTo... значительно менее функциональны, чем процедура Val. Во-первых они преобразовывают строку только в жестко заданный тип числовой переменной. А во-вторых (и в этом особый цимус) процедура Val показывает в каком символе входного параметра-строки ошибка! Что даёт возможность показать пользователю, где он при ручном вводе сделал ошибку. Ну точнее - где он сделал первую из своих ошибок ввода.

Это сообщение отредактировал(а) northener - 11.10.2012, 00:55


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
northener
Дата 11.10.2012, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(supervladislav @  10.10.2012,  22:21 Найти цитируемый пост)
Я просто думал ,что тут тоже программисты и смогут поделиться хотябы той литературой которую они читали.
С большим колличеством примеров , но такого я не нашёл.


Тут тоже программисты. Но далеко не все из них учились методом "подгонки готовых примеров под свою задачу".
Даже скажу что таких - меньшинство. Я знаю только одного.

Это сообщение отредактировал(а) northener - 11.10.2012, 01:27


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 11.10.2012, 03:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Использование StrToXXX когда нет уверенности что в строке число в нужном формате это нецелевое использование исключений, годится только для плохих студентов, которым сдать лабу и забыть. Правильный вариант TryStrToXXX, ну или Val, если вы не можете смириться с показаниями календаря


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Delvish
Дата 11.10.2012, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


oO
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 13.12.2006

Репутация: нет
Всего: 4



Цитата(northener @  11.10.2012,  01:44 Найти цитируемый пост)
Но Val - это "ещё более стандартная" процедура Дельфи.  Скажу более. Она использует тот самый Compile Magic. А функция TryStrToInt как раз и использует процедуру Val. См. исходники Дельфи. В них тоже самое, что в посте Delvish, но гораздо элегантнее. И без ошибки в типе второго параметра.P.S.  Функции TryStrTo... значительно менее функциональны, чем процедура Val. Во-первых они преобразовывают строку только в жестко заданный тип числовой переменной. А во-вторых (и в этом особый цимус) процедура Val показывает в каком символе входного параметра-строки ошибка! Что даёт возможность показать пользователю, где он при ручном вводе сделал ошибку. Ну точнее - где он сделал первую из своих ошибок ввода.


это я и имел ввиду - TryStr.. основывается на старом-добром Val, в котором 2й параметр можно задать натуральным либо вещественным типом в зависимости от того, какой результат хочется увидеть. и да, плюс ко всему - это третий параметр с порядковым номером ошибочного символа, если он присутствует
PM MAIL   Вверх
northener
Дата 11.10.2012, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Вот ведь как забавно!
Исторически в турбо паскале существовала процедура Val не вызывавшая ошибок времени исполнения (runtime error). При рождении Дельфи для этой процедуры сделали обертку, которая стала такие ошибки (теперь они называются exception) выдавать:
Код

function StrToInt(const S: string): Integer;
var
  E: Integer;
begin
  Val(S, Result, E);
  if E <> 0 then ConvertErrorFmt(@SInvalidInteger, [S]);
end;

И понадобилось еще лет 10, чтобы к той самой процедуре Val сделали новую обертку, которая вновь не вывает ошибок:
Код

function TryStrToInt(const S: string; out Value: Integer): Boolean;
var
  E: Integer;
begin
  Val(S, Value, E);
  Result := E = 0;
end;


Неисповедимы пути твои, господи. smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
supervladislav
Дата 11.10.2012, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



northener, Если человек изучает с ноля с минимум примеров , а вы изучали сами или вас застовляли?

Добавлено через 22 секунды
ПРостой толковой литературы маловато пока.
PM MAIL   Вверх
northener
Дата 12.10.2012, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(supervladislav @  11.10.2012,  20:56 Найти цитируемый пост)
northener, Если человек изучает с ноля с минимум примеров , а вы изучали сами или вас застовляли?

Меня никто не застАвлял. Учился почти совсем без примеров. Но Аглицкий Технический знал, так что мог читать хелп. Если он был, конечно smile

P.S. Да ради бога. Изучай с ноля и без примеров.
Но, пожалуйста, пойми одну простую вещь. Если мне когда-нибудь придётся что-то делать на php, я не стану на форумах задавать "умные" вопросы. Я просто скажу,что php я не знаю. А мне нужно сделать, чтобы моя програмима делала то-то и то-то. Что из некоторых соображений я пытаюсь сделать так (тут кусок кода), но у меня не получается. Помогите исправить мои ошибки!


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
spindul
Дата 13.10.2012, 21:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 30.7.2011

Репутация: нет
Всего: нет



Цитата(supervladislav @  11.10.2012,  20:56 Найти цитируемый пост)
ПРостой толковой литературы маловато пока. 

Ну по-моему литературы простой по Delphi предостаточно, взять того же Фленова "Библия Delphi" написана доступным и понятным языком, что даже дитё разберется
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.