|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.09.2016, 18:40 | #1 |
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 295
|
UnicodeString
В Delphi2009 и старше тип String теперь определён не как AnsiString, а как UnicodeString. Соответственно, PString = ^UnicodeString.
А вот как дела обстоят с Char? Char = WideChar, PChar = ^WideChar? Или как-то по-другому? Почему если Char = WideChar, то String = Unicode, а не WideString? И в чём принципиальная разница между этими типами строк? Ведь это не одно и то же, потому как: Код:
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
28.09.2016, 18:57 | #2 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
+ UnicodeString потому что тип WideString тоже давно был(но он не тоже самое) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
28.09.2016, 19:04 | #3 | |
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 295
|
Между Unicode и ANSI разница как минимум в размерности: 2 байта и 1.
А вот UnicodeString и WideString обе двухбайтовые. В чём между ними-то разница? Цитата:
И почему UnicodeString[1] - это WideChar, если UnicodeString и WideString - это разные вещи?
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
|
28.09.2016, 19:07 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
WideString это BSTR из COM-мира винды.
соотственно он имеет фиксированную реализацию. UnicodeString это их уж, он имеет их реализацию, но имя уже есть. ну а WideChar уже давно есть, и это вполне себе тупой тип, смысл делать еще один псевдоним? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
28.09.2016, 19:08 | #5 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Цитата:
Я не знаток COM. Я так понимаю что WideString управляет COM объект. А Unicode - строкой дельфи. В Unicode есть подсчёт ссылок при копировании такой строки увеличивается счётчик ссылок. А для WideString целиком копируется строка так как COM объекты могут работать даже на разных компьютерах. Тем самым Unicode - более эффективна.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||
28.09.2016, 19:09 | #6 | |
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 295
|
Я даже больше скажу: например, MessageBoxW принимает параметры типа LPCWSTR, который описан (в Winapi.Windows.pas) как LPCWSTR = PWideChar.
Не надо быть экстрасенсом, чтобы понять, что W в данном случае означает Wide. Хотя в MSDN написано: Цитата:
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
|
28.09.2016, 19:10 | #7 | |
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 295
|
Цитата:
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
|
28.09.2016, 19:14 | #8 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Но нормально эту особенность использовать затруднительно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
28.09.2016, 19:17 | #9 |
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 295
|
А вообще типа Unicode появился в 2009 (когда все String стали UnicodeString) или раньше?
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
28.09.2016, 19:18 | #10 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
да и в WinAPI оно означает тоже что символы широкие(Wide), но сама по себе функция юникодная(нет кодировки широкая) Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Из UnicodeString в char[] | Lokki23 | C++ Builder | 3 | 21.01.2014 20:14 |
Сохранить в файл UnicodeString | greenisius | Общие вопросы C/C++ | 6 | 08.12.2013 14:04 |
Строки UnicodeString и string | greenisius | C++ Builder | 3 | 07.11.2012 11:31 |
Cannot convert 'int*' to 'UnicodeString' | York | C++ Builder | 1 | 24.02.2012 10:48 |
UnicodeString - кодирование русских символов. | Freeman | C++ Builder | 3 | 15.06.2011 03:32 |