Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Строки-константы в delphi XE   Найти похожие ветки 

 
Димка На   (2012-02-07 13:15) [0]

Вот например:

procedure foo(const bar: UTF8String);
begin
...
end;


Вызываем:
Вот например:

foo("example");


Как компилятор сделает (А или Б)?
А. Строка будет храниться в памяти (и образе) изначально в кодировке UTF8 и передаваться будет ссылка на константу.
Б. Строка будет конвертироваться в UTF8String при каждом вызове.


 
Dimka Maslov ©   (2012-02-07 13:22) [1]

Отладчик и hex-редактор не спасут отца русской демократии?


 
И. Павел ©   (2012-02-07 13:35) [2]

> [0] Димка На   (07.02.12 13:15)

Судя по Watch->Memory dump — А.


 
И. Павел ©   (2012-02-07 13:43) [3]

[2] — неверно, я не правильно понял вопрос...


 
Anatoly Podgoretsky ©   (2012-02-07 13:51) [4]


> Отладчик и hex-редактор не спасут отца русской демократии?

Спасет только штатная справка и учебники.


 
Игорь Шевченко ©   (2012-02-07 14:34) [5]


> Как компилятор сделает


А от Б ничем не отличаются в приведенном примере

а вот foo("русский текст") отличаться будут. Потому что "русский текст" будет преобразован в UTF8 на этапе компиляции


 
И. Павел ©   (2012-02-07 14:50) [6]

Все-таки ответ А. Изначально константа в том формате, в котором ее ждет функция (ну, конечно, момент компиляции я не считал :).


 
Dimka Maslov ©   (2012-02-07 15:14) [7]


> И. Павел ©   (07.02.12 14:50) [6]


У меня heх-редактор показал то же самое


 
Димка На   (2012-02-07 15:35) [8]


> Игорь Шевченко ©   (07.02.12 14:34) [5]
> > Как компилятор сделает
> А от Б ничем не отличаются в приведенном примере
> а вот foo("русский текст") отличаться будут. Потому что
> "русский текст" будет преобразован в UTF8 на этапе компиляции

Ошибаетесь. В кодировке UTF8String английские символы кодируются 1 байтом, а в WideString любой символ двумя.


> Отладчик и hex-редактор не спасут отца русской демократии?

Что-то я и забыл что так можно. Действительно, ответ А.

Всем спасибо =)


 
Игорь Шевченко ©   (2012-02-07 20:35) [9]


> Ошибаетесь.


Не ошибаюсь



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
2-1338391814
Serge Petrov
2012-05-30 19:30
2013.03.22
TWebBrowser и обновление элемента веб-страницы


2-1338866460
Alex_Y
2012-06-05 07:21
2013.03.22
Не останавливается Breakpoint


15-1335608712
Труп Васи Доброго
2012-04-28 14:25
2013.03.22
Телефоноудлинитель


2-1335889883
PacMan
2012-05-01 20:31
2013.03.22
TThread копирование файла в 2-х потоках


2-1328181215
harisma
2012-02-02 15:13
2013.03.22
Корректно освободить память