Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2022, 01:03   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 478
По умолчанию Отличие String PChar

В чем отличие этих типов? Что я нашел:

1. Константы PChar занимают меньше места в ехе файле

2. Ссылки. Если в ссылку предназначенную для PChar задать адрес константы String - оно работает корректно и получается тот же текст. А вот есть в указатель на String дать адрес константы PChar - то отображается пустая строка

Тут второй вопрос: насколько вообще это корректно? В указатель предназначенный для PChar подставлять String

Где это применяется у меня: для переименовки кнопок/лейблов использую процедуру SetTextBuf, у которой параметр типа PChar
Kronos913 вне форума Ответить с цитированием
Старый 04.10.2022, 01:18   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,176
По умолчанию

PChar (PAnsiChar, PWideChar) - это обычная C строка. Указатель на ее начало записывается в переменную этого типа и она заканчивается символом с кодом 0.
String (AnsiString, WideString) - это класс строка. По мимо схожести с C строкой по своей структуре построения, она обладает дополнительными полями данных и механизмами управления памятью. Подробнее
macomics на форуме Ответить с цитированием
Старый 04.10.2022, 02:41   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,811
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Тут второй вопрос: насколько вообще это корректно? В указатель предназначенный для PChar подставлять String

Где это применяется у меня: для переименовки кнопок/лейблов использую процедуру SetTextBuf, у которой параметр типа PChar
А откуда вы нарыли "процедуру SetTextBuf, у которой параметр типа PChar"?
northener вне форума Ответить с цитированием
Старый 04.10.2022, 06:50   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,176
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А откуда вы нарыли "процедуру SetTextBuf, у которой параметр типа PChar"?
Сам написал, подбирая вариант, в котором код будет короче.
macomics на форуме Ответить с цитированием
Старый 04.10.2022, 14:45   #5
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 478
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А откуда вы нарыли "процедуру SetTextBuf, у которой параметр типа PChar"?
Посмотрел через CPU что делает компилятор при Caption := что-то там
Потом нашел в библиотеке юнитов, что вызываемая так процедура вызывает SetTextBuf
Ну и понял, что можно напрямую к SetTextBuf обратиться
Kronos913 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
String и PChar iCaesy Общие вопросы Delphi 24 26.01.2012 01:37
как перевести Pchar в string? green-shrek Помощь студентам 3 07.04.2010 19:01
гарантированный перевод string в PChar Пепел Феникса Общие вопросы Delphi 2 21.09.2009 11:44
String to PChar D7_beginner Общие вопросы Delphi 2 21.11.2007 14:05
Как из string получить PChar??? sis Компоненты Delphi 4 11.02.2007 16:58