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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2013, 10:36   #1
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию Работа со строками Delphi

Требуется пройти по строке например 1,2,3,4,5 и записать только числа в отдельный массив типа Integer. По идее код я накатал только он постоянно выдает, что '' не Integer, я не могу найти где он у меня на пустое место натыкается.
Код:
 for i:=1 to length(s) do begin
     if (s[i] <> ',') and (s[i] <> ' ') then sm:=sm+s[i]; else begin 
         inc(x); 
         a[x]:=strtoint(sm);
         sm:='';
     end;
 end;
Heng вне форума Ответить с цитированием
Старый 06.02.2013, 11:27   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Код:
if (s[i] <> ',') and (s[i] <> ' ') then sm:=sm+s[i]; else begin
";" убрать, и похоже нарушена логика... то бишь если у вас символ не равен точке и пробелу, то вы делаете "sm:=sm+s[i]" - зачем? а то что после esle уже похоже на то что вам нужно, но почему оно выполняется у вас когда просматриваемый символ равен пробелу или запятой...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 06.02.2013, 12:15   #3
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
Код:
if (s[i] <> ',') and (s[i] <> ' ') then sm:=sm+s[i]; else begin
";" убрать, и похоже нарушена логика... то бишь если у вас символ не равен точке и пробелу, то вы делаете "sm:=sm+s[i]" - зачем? а то что после esle уже похоже на то что вам нужно, но почему оно выполняется у вас когда просматриваемый символ равен пробелу или запятой...
Учел поправки, проблема решена, спасибо.

Код:
for i:=1 to length(s) do begin
       if s[i] <> ',' then sm:=sm+s[i];
       if (s[i] = ',') or (s[i] = ' ') then begin  a[x]:=sm; b[x]:=sm; inc(x); sm:='';end;
     end;
Heng вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строками(delphi) elizar Помощь студентам 5 21.03.2012 12:53
Работа со строками Delphi Яська Помощь студентам 1 03.12.2010 00:15
Работа со строками в Delphi Kurai Помощь студентам 6 13.04.2010 21:57
работа со строками delphi fize Помощь студентам 22 07.01.2010 03:59