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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2013, 10:41   #1
-=DeS=-
Форумчанин
 
Аватар для -=DeS=-
 
Регистрация: 20.12.2006
Сообщений: 135
Вопрос Не работает цикл

Здравствуйте, пишу программу мониторинга сети, вот что есть в данный момент:
Код:
for h:=StrToInt(Form2.Edit7.Text) to StrToInt(Form2.Edit8.Text) do
  for c:=StrToInt(Form2.Edit5.Text) to StrToInt(Form2.Edit6.Text) do
  for j:=StrToInt(Form2.Edit3.Text) to StrToInt(Form2.Edit4.Text) do
  for i:=StrToInt(Form2.Edit1.Text) to StrToInt(Form2.Edit2.Text) do
  ip:=(IntToStr(h)+'.'+IntToStr(c)+'.'+IntToStr(j)+'.'+IntToStr(i));
       if WSAStartup($101,D)<>0 then
          begin
            ShowMessage('error..');
            exit;
          end;
        Form2.StatusBar1.Panels[0].Text:=ip;
        A.sin_family:=AF_INET;
  A.sin_addr.S_addr:=inet_addr(pchar(ip));
  S:=socket(AF_INET,SOCK_STREAM,0);
    if S=INVALID_SOCKET then  Form2.Memo1.Lines.Add('socket error');
        A.sin_port:=htons(StrToInt(Form2.Edit9.Text));
    if connect(S,A,sizeof(A))=0 then
        Form2.Memo1.Lines.Add(ip+':'+Form2.Edit9.Text+' On')
    else
    Form2.Memo1.Lines.Add(ip+':'+Form2.Edit9.Text+' Off');
    end;
Всё дело в том что не работает цикл, то есть проверяется только последний айпи который я укажу, где то я допустил ошибку, посмотрите свежим взглядом плз.
writeln('Hello Dude!!!');
-=DeS=- вне форума Ответить с цитированием
Старый 17.03.2013, 10:45   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

В цикле работает только одна команда ip:=(IntToStr(h)+'.'+IntToStr(c)+'. '+IntToStr(j)+'.'+IntToStr(i));
Тело цикла в операторные скобки возьмите - BEGIN ... END
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.03.2013, 11:00   #3
-=DeS=-
Форумчанин
 
Аватар для -=DeS=-
 
Регистрация: 20.12.2006
Сообщений: 135
По умолчанию

Аватар
Точно, вот блин что значит свежий взгляд =) Спасибо.
Теперь бы ещё таймаут уменьшить, если комп неработает.
writeln('Hello Dude!!!');

Последний раз редактировалось -=DeS=-; 17.03.2013 в 11:02.
-=DeS=- вне форума Ответить с цитированием
Старый 17.03.2013, 11:34   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Пожалуйста
Цитата:
Точно, вот блин что значит свежий взгляд
Свежий взгляд не при делах. При делах стиль написания кода. Выдерживали бы отступы для вложенных блоков и на форуме не пришлось бы помощи просить. А так и сам фиг что поймешь через два часа после написания кода Как вариант так например
Код:
  for h:=StrToInt(Form2.Edit7.Text) to StrToInt(Form2.Edit8.Text) do
    for c:=StrToInt(Form2.Edit5.Text) to StrToInt(Form2.Edit6.Text) do
      for j:=StrToInt(Form2.Edit3.Text) to StrToInt(Form2.Edit4.Text) do
        for i:=StrToInt(Form2.Edit1.Text) to StrToInt(Form2.Edit2.Text) do begin
          ip:=(IntToStr(h)+'.'+IntToStr(c)+'.'+IntToStr(j)+'.'+IntToStr(i));
          if WSAStartup($101,D)<>0 then begin
            ShowMessage('error..');
            exit;
          end;
          Form2.StatusBar1.Panels[0].Text:=ip;
          A.sin_family:=AF_INET;
          A.sin_addr.S_addr:=inet_addr(pchar(ip));
          S:=socket(AF_INET,SOCK_STREAM,0);
          if S=INVALID_SOCKET then  Form2.Memo1.Lines.Add('socket error');
          A.sin_port:=htons(StrToInt(Form2.Edit9.Text));
          if connect(S,A,sizeof(A))=0 then Form2.Memo1.Lines.Add(ip+':'+Form2.Edit9.Text+' On')
                                      else Form2.Memo1.Lines.Add(ip+':'+Form2.Edit9.Text+' Off');
        end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.03.2013 в 11:39.
Аватар вне форума Ответить с цитированием
Старый 17.03.2013, 13:19   #5
-=DeS=-
Форумчанин
 
Аватар для -=DeS=-
 
Регистрация: 20.12.2006
Сообщений: 135
По умолчанию

Насчёт таймаута может кто подсказать?
Код:
setsockopt(S, SOL_SOCKET, SO_RCVTIMEO, @TimeOut, SizeOf(TimeOut));
setsockopt(S, SOL_SOCKET, SO_SNDTIMEO, @TimeOut, SizeOf(TimeOut));
Почему-то не работает =(
writeln('Hello Dude!!!');
-=DeS=- вне форума Ответить с цитированием
Старый 17.03.2013, 14:41   #6
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

таймаут задается в миллисекундах. попробуйте значение в 10000 мс
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 17.03.2013, 14:45   #7
-=DeS=-
Форумчанин
 
Аватар для -=DeS=-
 
Регистрация: 20.12.2006
Сообщений: 135
По умолчанию

Цитата:
Сообщение от 3D Hunter Посмотреть сообщение
таймаут задается в миллисекундах. попробуйте значение в 10000 мс
Я знаю, что в м.с задаётся.
Дело в том что хоть 1000 хоть 100000 ставь один фиг сокет своей жизнью живёт. И как висел секунд 10-15 так и висит.
writeln('Hello Dude!!!');
-=DeS=- вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает цикл по радиокнопкам zeva JavaScript, Ajax 1 18.05.2012 16:47
Цикл не работает Faridik Общие вопросы по Java, Java SE, Kotlin 1 14.08.2011 12:14
Не работает цикл Lisёноk Помощь студентам 5 23.03.2010 21:39
Цикл не работает doniyor Общие вопросы Delphi 1 06.12.2009 15:52
Цикл не работает...? Иринкаа Помощь студентам 6 17.11.2007 00:27