bool isDigit(const char* str)
{
while(*str) {
if(*str < '0' || *str > '9') return false;
str++;
}
return true;
}
Проверка на число в Edit
скажите, пожалуйсто, как проверить число ли находится в Edit
Считать строку из Edit'а, а далее посимвольно проверять на принадлежность диапазону чисел из таблицы ASCII
а нет простой функции которая вернёт true или false, по значению переданной ей строки?
а нету простой функции которая вернёт true или false по значению переданной ей строки
Функция, действительено, простая и написать её тебе не составит труда.
зачем изобретать велосипед, мне кто-нибудь может сказать есть она в Builder'e и что эта за функция
TryStrToFloat
то что нужно, сенкс
За тем, что этот велосипед из трех строк быстрее написать, чем вопрос в форум.
тогда мне пришлось бы каждый раз этот велосипед писать
Ну если не умеешь использовать свой код повторно, то придется...
А так придется каждый раз задавать вопрос в форуме... :)
А так придется каждый раз задавать вопрос в форуме... :)[/QUOTE]
если рассуждать как ты, то зачем тогда вообще функции билдера использовать? лучше всё писать на чистом С++ используя только API, тогда и программа быстрее работать будет, и код меньше.
Если что-то сделать быстрее, чем искать, то лучше сделать.
Кстати, в твоем случае никакого API не надо.
И ещё кстати, TryStrToFloat - это конвертирования, а не определения является ли строка числом. Минус в том, что она делает СЛИШКОМ МНОГО лишних действий.
Если что-то сделать быстрее, чем искать, то лучше сделать.[/QUOTE]
если не искать можно остаться на одном месте
[QUOTE=Green]
Кстати, в твоем случае никакого API не надо.[/QUOTE]
я не говорил про API для своего случая, это была общая фраза
[QUOTE=Green]
И ещё кстати, TryStrToFloat - это конвертирования, а не определения является ли строка числом. Минус в том, что она делает СЛИШКОМ МНОГО лишних действий.[/QUOTE]
да, я заметил уже, что функция грамоздкая для моего случая
[/QUOTE]
Ага... можно воткнуть пылесос в удлинитель и продолжить уборку, а можно приостановиться на пару дней и искать пылесос с более длинным проводом.
Кто в данном случае стоит на месте?
А теперь о времени...
Первое сообщение - 11:37
Не совсем подходящий ответ (TryStrToFloat) - 13:54
и того больше 2х часов.
Теперь код:
Код:
Время написания вместе с тестами - 10 минут.
:)) ну да ты прав, хотя я расчитывал на то, что всё таки есть удобная функция (и скорее всего она должна быть), и поиск пылесоса с длинным проводом будет не долгим, но зато с ним в дальнейшем было бы удобнее работать
твоя функция именно то что мне нужно, но теперь для другого проекта мне её нужно будет подрубать или копировать
скажи как теперь мне использовать эту функцию в других проектах? копировать или DLL сделать?, щас сделал DLL и скажу тебе что лучше всё таки найти билдеровскую функци, геморойное дело создовать DLL для моих простых приложений
int isdigit (int simv); // выделяет мл. байт simv и если это цифра, возвращает true
Смотри здесь
int iswdigit (wint_t simv); // если simv - цифра, возвращает true (для многобайтных слов)
Короче говоря, смотри ctype.h ;)
Я, конечно, как всегда вовремя... :D
Но вообще-то Грин прав... Вот из-за этой малюсенькой функции ты сейчас будешь инклудить весь ctype.h!
int isdigit (int simv); // выделяет мл. байт simv и если это цифра, возвращает true
Смотри здесь
int iswdigit (wint_t simv); // если simv - цифра, возвращает true (для многобайтных слов)
Короче говоря, смотри ctype.h ;)
Я, конечно, как всегда вовремя... :D[/QUOTE]
Эти функции не решают задачу, т.к. определяют принадлежность ОДНОГО СИМВОЛА к цифровым символам.
Это всего-лишь равносильно записи: (ch >= '0' & ch <= '9').
[QUOTE=[SS]Modest]
скажи как теперь мне использовать эту функцию в других проектах? копировать или DLL сделать?, щас сделал DLL и скажу тебе что лучше всё таки найти билдеровскую функци, геморойное дело создовать DLL для моих простых приложений
[/QUOTE]
Для повторного использования кода не обязательно создавать DLL.
Простейший способ: создай файл .h и объяви в нем свою функцию, создай соотв. файл .cpp и определи в нем эту функцию.
После этого добавляй в свои проекты два этих файла. Ну, конечно, не забывай прописывать инклуды.
Второй способ - это создание статической библиотеки, т.е. компиляция в .lib.
Это всего-лишь равносильно записи: (ch >= '0' & ch <= '9').[/QUOTE]
А я, собственно, что сказал? Функция определяет, является ли символ цифрой! Не числом ведь, а цифрой. Само собой, нужен цикл. :) Короче говоря, лучше ручками написать...