Школоло / Говнокод #14674 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  with message1 do
  begin
    Subject:='Test subject';
    From := '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4533271a35271a2430312a2c311a27302c29212037053d242e20376b3730">[email protected]</a>';
    To := '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e09682bf9082bf8195948f8994bf8295898c848592a098818b8592ce9295">[email protected]</a>';
    Textbody:='Text body';
  [. . .]
    Configuration.Fields.Update;
    Send;
end;

Лососнул тунца.

with message1 do
  begin
    Subject:='Test subject';
    From := 'vb_pb_autoit_builder@xaker.ru';
    To := 'vb_pb_autoit_builder@xaker.ru';
    Textbody:='Text body';


'To' - ключевое слово, смирись, смертный, и забудь о 'with'
p.s. капча сейчас - 4 семерки.

Запостил: Stertor Stertor, (Updated )

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

  • Компилятор при создании tlb додуплил заменить to на to_, однако напутал с присваиванием значения:
    procedure TMessage.Set_To_(const pTo: WideString);
      { Warning: The property To_ has a setter and a getter whose
        types do not match. Delphi was unable to generate a property of
        this sort and so is using a Variant as a passthrough. }
    var
      InterfaceVariant: OleVariant;
    begin
      InterfaceVariant := DefaultInterface;
      InterfaceVariant.To_ := pTo;
    end;
    
    function TMessage.Get_TextBody: WideString;
    begin
        Result := DefaultInterface.TextBody;
    end;


    InterfaceVariant.To_ := pTo;

    исправил на
    InterfaceVariant.To := pTo;

    после этого заработало нормально.
    Ответить
  • А есть возможность средствами языка добавить в тип поле, название которого является ключевым словом? Record, object, class, interface меня послали куда подальше.
    Ответить
    • врать не буду - не знаю, но склоняюсь к мысли, что в большинстве случаев - нет.
      Ответить
    • С амперсандом можно:
      type
        &Class = class
        public
          &Public: Integer;
          &Record: record
            &end: String;
          end;
          class function &Function: &Class;
          function &Do: &Class;
          constructor &Constructor(const &Const: Integer);
        end;
      
      constructor &Class.&Constructor(const &Const: Integer);
      begin
        Create;
        &Public := &Const;
        &Record.&end := 'Hello, World!';
      end;
      
      function &Class.&Do: &Class;
      begin
        Writeln(&Record.&end);
        &Do := Self;
      end;
      
      class function &Class.&Function: &Class;
      begin
        &Function := &Class.&Constructor(42);
      end;
      
      begin
        &Class.&Function.&Do.Free;
        Readln;
      end.
      Ответить
        • Можно. Но при этом почему-то horse и &horse считаются одной и той же переменной.
          Ответить
          • Потому что это и есть одна и та же переменная.

            Кстати, в других языках то же есть подобная возможность. Например, в тёплом ламповом C# используется символ @.
            Ответить
            • А зачем? Я знаю, только, что гоатсе в си обозначает сырой строковой литерал.
              Ответить
              • Чтобы можно было использовать зарезервированное ключевое слово как имя переменной.

                Это может понадобиться при переносе с одного языка на другой, при автоматической кодогенерации.
                Ответить
      • Delphi 7 выплёвывает, Delphi 10 принимает. В FPC компилируется с директивой {$MODE DELPHI}.

        Когда этот символ появился в Delphi и что он означает?
        Ответить
        • Сколько мне память не изменяет это значит значение по ссылке procedure ttt(&arg: integer) bregin ... end;
          Ответить
          • С божественной Сишечкой путаете, товарищ. Если моя память не спит с другим, то сишкосахара в Дельфях нет. Есть procedure ttt(var arg: integer), есть procedure ttt(arg: ^integer), а прямо как в Сишечке, нет.
            Ответить
        • Он еще в Turbo Pascal-ях был, запрещает компилятору считать последующий идентификатор в качестве ключевого слова языка.
          Ответить
          • я им в асмовставках пользовался
            есть переменные dx,dy, а есть регистр dx, неудобно
            Ответить
            • Вот как раз только в асмовставках он и был доступен в Турбо-Паскалях. Вне асмовставок его можно использовать только в новых Дельфях.
              Ответить
    • Эх, зря ты так. Но когда-то я сам думал так, когда сидел под пюре гуляшбейсиком, и думал что жизнь прекрасна. Делфи я боялся даже открывать, потому, что от обилия типов рябило в глазах, а синтаксис паскальный я ненавидел. Пара жестких обломов заставила меня "на карачках приползти в Delphi"
      Ответить
      • Когда-нибудь тебя пару обломов заставят выкинуть его нахуй и переползти на более современный язык. Впрочем, если писать падсибя, то можно писать на чем угодно.
        Ответить
        • Вы, батенька, видно, плохо знаете суть вещей. Недавно Delphi XE 5 вышла - под андроидные девайсы можно проги компилить, я правда, не смотрел. То, что я сижу под девяткой - мои личные, как бы, проблемы. Но Делфи - жив, это однозначно.
          Когда разрабатывали RAD Delphi XE были приглашены даже эксперты из Microsoft.
          Ответить
      • а от разнообразия ключевых (причем парных!) ключевых слов не рябило?
        это не только долго пропечатывать, но еще и точно знать эти "пары"
        Ответить
        • Не, меня больше оператор присваивания и типы коробили.. Но потом привык.
          Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8