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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2010, 13:30   #1
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
Вопрос Где ошибка в моем цикле?

Всем доброго времени суток.

Что-то никак не могу найти ошибку в таком простом вроде бы цикле:

Код:
  
  DigLeng := 0;
  
  ....
   
  for i := 1 to Length(memDin.Text) do
  begin
    if Not (memDin.Text[i] in ['0', '1']) then
    begin
      if DigLeng = 0 then DigLeng := i - 1;
    end else
      DigLeng := Length(memDin.Text);
  end;
У меня есть строка, к примеру такого вида: 000000100010010 acbdcdbdc. Я в цикле прохожу по всем символам строки и если символ не 0 и не 1, то беру длину первого слова (DigLeng), а если строка состоит только из 0 и 1, то беру за длину всю строку, но у меня этот цикл почему то всегда выдает длину всей строки.
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 19.02.2010, 13:46   #2
ProgDel
Пользователь
 
Аватар для ProgDel
 
Регистрация: 15.02.2010
Сообщений: 67
По умолчанию

Всё дело в том, что надо удалять 0 и 1 после их просмотра в цикле.
ProgDel вне форума Ответить с цитированием
Старый 19.02.2010, 13:55   #3
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Тебе нужно достать из строки двоичное число ?
Код:
DigLeng := 0;
i := 1;
...
...
while ((memDin.Text[i] in ['0', '1']) and (i <= Length(memDin.Text))) do 
  begin  
  Inc(DigLeng);
  Inc(i);
  end;
В итоге у тебя в DigLeng будет или 0 или длина строки из нулей и единиц.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 19.02.2010, 14:33   #4
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Kotofff, мне нужно определить длину слова состоящего из нулей и единиц. Т.е. 0 не может быть.
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 19.02.2010, 14:46   #5
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

Код:
len:=0;
...
  for i := 1 to Length(Text) do begin
if text[i] in ['0'..'1'] then len:=len+1;
if (text[i]=' ') and (len<>0) then break;
end;
....
Google2010 вне форума Ответить с цитированием
Старый 19.02.2010, 14:48   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

ты код проверил ?
0 будет если вдруг в строке окажется первый символ не 0 или 1
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 19.02.2010, 16:23   #7
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Kotofff, теперь проверил, и примного благодарен, вот только почему-то пишут что репу тебе поднимать мне нельзя
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так, чтобы в моем браузере новое окно страницы открывалось в моем-же браузере??? Somilya Помощь студентам 6 22.12.2009 21:56
Ошибка в цикле Oleg Romanchuk Помощь студентам 10 17.11.2009 06:34
Ошибка в цикле Belokuraya Microsoft Office Excel 11 18.08.2009 15:52
Ошибка в цикле Alamez Общие вопросы Delphi 2 05.04.2009 15:12
Где ошибка в моем коде? artemavd БД в Delphi 12 22.09.2008 14:28