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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2009, 22:41   #1
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию Как узнать состоит ли строка из одных числовых символов

Собственно вопрос:
Как узнать состоит ли строка из одных числовых символов

Тоесть

string := '784932432';
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Старый 12.08.2009, 22:54   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
function CheckStringOnNumbers(S:string):boolean;
var i:integer;
begin
 Result:=true;
 i:=1
 while i<=Length(s) do
  begin
   if not(s[i] in ['0','9']) then begin Result:= false; exit; end;
   inc(i);
  end;
end;
вроде не ошибся=)

исправил, спасибо to spamer
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 12.08.2009 в 23:15.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.08.2009, 23:02   #3
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

А если так?
Код:
function is_numeric( str : string) : boolean;
var i : longword;
Result := true;
try 
i := strtoint(str);
except
Result := false;
end;
Правда если строка не огромная...
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 12.08.2009, 23:06   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Пепел Феникса в твоей функции не совместимость типов получается.
Может вот так нада было
Код:
   if not(s[i] in ['0'..'9']) then begin Result:= false; exit; end;
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 12.08.2009, 23:12   #5
Cold_Night
Пользователь
 
Регистрация: 13.02.2009
Сообщений: 32
По умолчанию

Код:
function OnlyNumbers(S: string): Boolean;
var I: Cardinal;
begin
  for I:=1 to Length(S) do
  begin
    if not (S[I] in ['0'..'9']) then
    begin
    Result:=False;
    Break;
    end
     else Result:=True;
  end;
end;
Возвратит True, если в строке только числа
Cold_Night вне форума Ответить с цитированием
Старый 12.08.2009, 23:12   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

spamer, точно
пропустил кавычки...каюсь=)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.08.2009, 23:13   #7
TAVulator
Программист
Форумчанин
 
Аватар для TAVulator
 
Регистрация: 23.07.2009
Сообщений: 101
По умолчанию

и с For было бы разумней:
Код:
function CheckStringOnNumbers(S:string):boolean;
var i:integer;
begin
 Result:=true;
 For i:=1 to length(s) do
   if not(s[i] in ['0'..'9']) then begin Result:= false; break; end;
end;
Если вы верите, что можете или не можете
сделать что-то, вы правы в обоих случаях.

______________________________(С) Г.Форд
TAVulator вне форума Ответить с цитированием
Старый 12.08.2009, 23:39   #8
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Всем спасиба идею понял, буду крутить, хотя сам думал в сторону цикла
но решил спросить так как по думал что цикл не есть круто
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Старый 13.08.2009, 00:07   #9
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Проще воспользоваться функцией TryStrToInt(), пример:
Код:
var i: integer;
.....
i := 0;
if TryStrToInt(string, i) then
  успех else
  неудача;
В переменной i - храниться полученное числовое значение строки.
Gorychev вне форума Ответить с цитированием
Старый 13.08.2009, 00:17   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Gorychev,
1) такой вариант уже был предложен (посмотрите на предыдущей странице...
2) подобный подход, строго говоря - НЕ РЕШАЕТ поставленную задачу.
поясняю.
вот строчка: '98787919191929394999999999999999'
она отвечает условию задачи ("состоит ли строка из одних числовых символов"). Ответ - ДА, отвечает.
Ваш код не сможет подобное обработать.

Предложенные решения с циклом эффективны и просты.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++,строка символов Alik-Soldier Помощь студентам 1 01.05.2009 16:57
Дана строка символов. Задача: удалить из строки все цифры. Striker14 Помощь студентам 1 25.02.2009 20:23
Как узнать существует ли в БД нужная строка? kiber0net0 БД в Delphi 1 02.09.2008 21:31
как сохранить содержимое memo1 так чтобы строка начиналась с определённых символов.... aesoem Общие вопросы Delphi 17 29.02.2008 20:52
Строка символов в виде байтов Blondinka Общие вопросы Delphi 17 14.09.2007 19:06