Проверка вхождения в строку символов

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Ответить
gvido
постоялец
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Проверка вхождения в строку символов

Сообщение gvido »

Что тут не правильно??? Смысл задачи простой. Есть строка символов. нужно проверить ее на наличие множества символов и определить есть ли символы не входящие в множество.

function isisonum(a:string):integer;
var
i,e:integer;
begin
e:=0;
for i:=0 to length(a)-1 do
begin
if not (a[i] in ['0'..'9']) then
inc(e);
end;
isisonum:=e;
end;

showmessage(inttostr(isisonum('50043908a8210d0k421')));

неправильно отрабатывается вхождение ' if not (a[i] in ['0'..'9']) then'
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Строка имеет индексы с 1 до Length(s)
svk12
постоялец
Сообщения: 412
Зарегистрирован: 09.06.2008 18:42:47

Сообщение svk12 »

Вместо

Код: Выделить всё

if not (a[i] in ['0'..'9']) then

можно использовать

Код: Выделить всё

if Pos(a[i],'0123456789')=0 then
gvido
постоялец
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Сообщение gvido »

Ай, Спасибо!!!!! точно индекс с 1!!!!
Я пол дня мучался не мог понять в чем дело!!!
Про индекс как то даже не подумал!!!
Еще раз спасибо!!!
Ответить