1. Pascal / Говнокод #3371

    +101

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    function IPtoDWORD(const s: string):DWORD;
    var
    L: TStringList;
    b: packed array [0..3] of byte;
    i: Integer;
    begin
    Result := 0;
      L := TStringList.Create;
        try
          L.Delimiter := '.';
            L.DelimitedText := s;
              for i := 0 to 3 do
                b[3 - i] := StrToInt(L[i]);
                  Result := pdword(@b[0])^;
        finally
          L.Free
        end;
    end;
    ...
    if (NewIP >= IPtoDWORD('192.168.0.0')) and (NewIP <= IPtoDWORD('192.168.0.255')) then
      //Пускаем
        else
          ServerSocket.Socket.Connections[i - 1].SendText('запрет'); //Запрет
            ServerSocket.Socket.Connections[i - 1].Close; //Закрываем канал
              if (NewIP >= IPtoDWORD('193.168.0.0')) and (NewIP <= IPtoDWORD('193.168.0.255')) then
                //Пускаем
                if (NewIP >= IPtoDWORD('194.168.0.0')) and (NewIP <= IPtoDWORD('194.168.0.255')) then
                  //Пускаем
                    if (NewIP >= IPtoDWORD('195.168.0.0')) and (NewIP <= IPtoDWORD('195.168.0.255')) then
                      //Пускаем

    личинка быдлокодера в схватке с IPv4
    примечательно искрометное форматирование кода

    Запостил: bugmenot, 01 Июня 2010

    Комментарии (18) RSS

    • Ну сама реализация IPToWord ещё ничего, но её применение - мда...
      Ответить
      • полагаю, что IPtoDWORD() он банально скопипастил :-)
        Ответить
    • ящитаю говнокодом типы TStringList, TIntList или чо там ещё есть в быдлодельфяшечке.
      Ответить
      • Я так не считаю, но написал бы:
        d := 0;
          b := 0;
          s := s + '.';
          for i := 1 to Length(s) do
            if s[i] = '.' then
              begin
                d := d shl 8 + b;
                b := 0;
              end
            else
              b := b * 10 + StrToInt(s[i]);
        Ответить
        • Овладел const параметром сзади
          s := s + '.';
          Ответить
          • Эта константа очаровала меня своими стрингами :)))
            var b, i: integer;
            begin
              Result := 0;
              b := 0;
              for i := 1 to Length(s) do
                if s[i] = '.' then
                  begin
                    Result := Result shl 8 + b;
                    b := 0;
                  end
                else
                  b := b * 10 + ord(s[i]) - 48;
              Result := Result shl 8 + b;
            end;

            Вот.
            Ответить
            • Ага, иначе добавление точки вызовет бурление кучи (длинные строки - managed и copy-on-write)
              Ответить
      • Да нет. TStringList я даже умею динамически создавать(но не помню сейчас))). Прямо сейчас нужно проект - груповой запуск(останов) служб виндовс. Допустим - отключить все службы VMware Player (их 6). И где хранить списки служб? Конечно в TStringList! И на чем нужно такую прогру писать? Конечно на Delphi 7!
        Ответить
    • пукаем, пукаем, пукаем....

      прочиталостб
      Ответить
    • Внезапно, address := inet_addr('1.2.3.4');
      с поддержкой всех заморочек которые используются только в Берклях
      http://msdn.microsoft.com/en-us/library/ms738563(VS.85).aspx
      Ответить
    • А вы знаете, я тут подумал, и понял, что я -- тупорылый кретин, дебилоид и вообще всякое такое , простите великодушно, что парил ваши светлые мозги такой поебятиной, как делфе, я просто такой тупой, что больше никакого языка не знаю и решил вот хоть чего-нибудь написать..
      Ответить

    Добавить комментарий