Вопрос на засыпку (delphi)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by desTiny, 30 Nov 2008.

  1. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    По-моему, интересный факт...

    Что выведет код (компилятор не юзать):
    Code:
    procedure TForm1.FormCreate(Sender: TObject);
    var
    s1, s2: String;
    begin
      s1 := 'test';
      s1 := s1+'a'; //чтобы можно было изменять строку в асм коде ниже - ибо иначе она, по-сути, остаётся константой
      s2 := s1;
      asm
        mov eax, s2
        mov byte ptr [eax],65
      end;
      showmessage(s2);
      showmessage(s1);
    end;
    Ответ ниже
    _______________________











    Ответ:

    Aesta
    Aesta

    Объяснение - delphi хранит строки лениво.
     
    #1 desTiny, 30 Nov 2008
    Last edited: 30 Nov 2008
  2. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    хм...если не ошибюсь, то я про это прочитал давно, в книге "О чем не пишут в книгах по DELPHI" раздел подводные камни....