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

    +134

    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
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      MText ,temp: string;
      memorystream:tmemorystream;
      link:string;
      i:integer;
      startpos,endpos:integer;
      stag,etag:string;
      c:integer;
    begin
      stop:=false;
      try
      memorystream:=tmemorystream.create;
      stag:='target="_blank" href="#url?to=';
    
        memorystream.clear;
        try
          idhttp1.Get('http://otvet.mail.ru/93516',memorystream);
        except
        end;
        if idhttp1.connected=true then
        idhttp1.Disconnect;
        mtext:=memo1.text;//memorystreamtostring(memorystream);
        memo1.lines.add(mtext);
    
    // Выдает access violation
    
        StartPos := 0;
        endpos:=0;
        while (true) do
        begin
          startPos := Posex(stag, MText,startpos+1);
          endPos := PosEx(etag, MText, startPos);
          if startpos>0 then
          begin
            temp := Copy(MText, startPos, endPos - startPos);
            Memo2.lines.add(temp);
          end
          else
          break;
        end;
    finally
      end;
    end;

    Вонь стоит жуткая. Тому, кто первым найдет ошибку, поставлю пятерку)

    Ы.з. Это мой сотый код, так что теперь я на все 100% с Вами) обнимаю вас всех.

    Запостил: Stertor, 23 Августа 2013

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

    • показать все, что скрыто>idhttp1.Get('http://otvet.mail.ru/93516',memorystream);
      Привет, Бабушкин...
      Ответить
      • Привет, Дедушкин.
        Строковые типы нельзя использовать в качестве буфера для idhttp, если ты не знал.
        Гостю минус миллион.
        Ответить
        • >> temp := Copy(MText, startPos, endPos - startPos);

          Уходит в минус, не?
          Ответить
          • >>Уходит в минус, не?

            Generic integer types for 32-bit implementations of Delphi
            Type Range Format
            Integer -2147483648..2147483647 signed 32-bit
            Cardinal 0..4294967295 unsigned 32-bit

            Это не Cardinal. Думайте дальше)))
            Ы.Ы. Когда я сам понял, в чем ошибка, - чуть не задохнулся от возмущения.
            Ответить
    • показать все, что скрытоetag не инициализирован.
      Ответить
      • Гость, как и обещал: сейчас поставлю плюсы.
        Ответить
        • Упс. Нажал не ту кнопку )
          Ну да ладно-с, пущай...
          Ответить
          • Кстати еще tmemorystream не удаляется, утечка памяти.
            Ответить
            • Это я, кучер Ванька! Чай, не узнали господа? Вывалите мне член на воротник.
              Ответить
              • Stertor, знаешь как пахнет член, если его не мыть пару дней?
                Ответить

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