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

    +141

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    function TForm1.Pars(T_, ForS, _T: string): string;
    var a, b:integer;
    	begin
    	Result := '';
    	if (T_='') or (ForS='') or (_T='') then Exit;
    	a:=Pos(T_, ForS);
    	if a=0 then Exit else a:=a+Length(T_);
    	ForS:=Copy(ForS, a, Length(ForS)-a+1);
    	b:=Pos(_T, ForS);
    	if b>0 then
    	Result:=Copy(ForS, 1, b - 1);
    	end;

    Давно хотел выложить эту дуру на форум.
    В чем лажа? Я подозреваю, что перегруженный оператор '=' применительно к строкам (сравнение двух строк) это вызов lstrcmp.
    следовательно, POS ЧУВСТВИТЕЛЬНА к регистру!! Это значит, что функция вернет фалс, сравнивая ВоТ эТО и вот это.
    Но это полбеды. Иные горемыки передают ей километровый текст в качестве шаблона - это нормально.

    И потом еще кто то наивно удивляется, почему функция пропускает нужное или хватает лишнее.

    Запостил: Stertor, 26 Июня 2013

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

    • показать все, что скрытоСкажу я Вам одну вещь: все таки, это прекрасно, когда можно флудить и троллить на сайте, не опасаясь, что тебя забанит какой-то крутолобый идиот, с отсутствующим чувством юмора. Это звучит утопически, но ее я нашел здесь. Одно лишь плохо: это скоро надоедает, и становится скучно. А печаль располагает к высоким, просвещенным мыслям...
      Ответить
    • показать все, что скрытоХочу предупредить всех, просматривающих форум: НЕ регистрируйтесь с Вашей основной почты!!!!
      Ответить
    • >перегруженный оператор '=' применительно к строкам
      Под какую версию Делфи/Лазаруса код? Вроде перегрузки у них до 2005 не было.

      >POS ЧУВСТВИТЕЛЬНА к регистру
      Спасибо, Кэп.
      Ответить
      • ну, это я имел в виду, что компилятор сам распознает, что сравнивается: две строки или два числа. В любом случае, оператор будет один: '='
        Ответить
    • > Pars

      Разобрат?
      Ответить
      • Ken Thompson, the creator of Unix, was once asked what he'd do if he had it to do over again. He said, "I'd spell create with an 'e'."
        Ответить
      • Промт переводит "pars" с французского как "уедь" (от "partir"); чуть более вменяемый перевод - "уходи".
        Это именно то, что мы должны сказать опу-рачку.
        Ответить
        • Занятно. А что такое "опу-рачку" ? Должно быть, французское слово.
          Ответить
        • var
          temp,str,goned,lurker:string;
          temp:=' <li class="hcomment">
          <div id="comment-183917" class="entry-comment-wrapper">
          <p class="entry-info">
          <img class="avatar" src="http://govnokod.ru/files/avatars/noavatar_28.png" alt="ava" title="Аватар" />
          <strong class="entry-author"><a href="http://govnokod.ru/user/2108">eth0</a></strong>
          <abbr class="published" title="2013-06-26T19:42:34+04:00">24 минуты назад</abbr>
          <a href="http://govnokod.ru/13234#comment183917" name="comment183917" title="Ссылка на комментарий" class="comment-link">#</a>
          <span class="comment-vote">
          <strong title="0 за и 0 против">0</strong><a rel="nofollow" class="comment-vote-against" href="http://govnokod.ru/ratings/comment/183917/against" title="-1"> </a><a rel="nofollow" class="comment-vote-on" href="http://govnokod.ru/ratings/comment/183917/on" title="+1"> </a> </span>
          </p>
          <div class="entry-comment"><span class="comment-text">Промт переводит &quot;pars&quot; с французского как &quot;уедь&quot; (от &quot;partir&quot;); чуть более вменяемый перевод - &quot;уходи&quot;.<br />
          Это именно то, что мы должны сказать опу-рачку.</span></div>
          <a class="answer" href="http://govnokod.ru/comments/13167/post?replyTo=183917" onclick="comments.moveForm(183917, 13167, this); return false;">Ответить</a>
          </div>

          <ul><li id="answerForm_13167_183917"></li></ul>';

          goned:=' ,пошел на хуй';

          lurker:=pars(ansilowercase('http://govnokod.ru/user/2108">'),temp,'</a');

          goned:=lurker+goned;

          showmessage(goned);
          Ответить
    • var
      i,j:integer;
      begin
      i:=<any value>;
      j:=<any value too>;
      if i=j then
      .....

      Пример со строками:

      var
      str,txt:string;
      begin
      str:=<some string>;
      txt:=<some string too>;
      if str=txt then // вот тут и лажа

      а вот как правильно(на мой взгляд):
      if ansilowercase(txt)=ansilowercase(str) then
      ....
      Ответить

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