|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.09.2022, 13:25 | #1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
String vs ShortString
Есть целая куча строковых констант. Все небольшой длины.
Нужны они, в основном, для того чтобы присваивать имена кнопкам, которые создаются по ходу исполнения программы через TButton.Create Какого типа лучше их делать? String, или ShortString С одной стороны, ShortString занимает куда меньше места. Потому как в exe-файле между двумя String находятся 12 разделительных символа, а между ShortString - 4-5 С другой стороны, просмотрев через crtl+alt+C место создания имени кнопки, заметил, что у ShortString ощутимо длиннее код передачи строки. Как я понял, при передаче происходит конвертация ShortString в String Отсюда возникает вопрос - какой из видов строк лучше использовать в программе? |
07.09.2022, 13:32 | #2 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
И может быть как-то можно отредактировать TButton, TLabel и прочие, чтобы в них ShortString заходил напрямую, без конвертации?
|
07.09.2022, 13:38 | #3 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Без разницы. Вы не избежите всех теневых копирований строк. В конечном итоге эта строка все равно будет скопирована и сохранена в системном буфере при создании самой кнопки (как конечного окна класса BUTTON из user32.dll). Искать выгоды и оптимизации в этом месте возможно, но бесполезно. В конце концов вы всегда можете создать в ресурсах STRINGTABLE и расположить строки там. Это кстати может быть даже более удобно с точки зрения перевода/локализации программы на другие языки.
|
07.09.2022, 14:05 | #4 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
А какое вам дело, сколько памяти занимает структура и как быстро она обрабатывается, если вы говорите об элементах управления? Сам по себе интерфейс не требует какой-то супер производительности, на подобную ерунду можно просто забить и писать код так, как удобнее и как более читабельно.
E-Mail: arigato.freelance@gmail.com
|
07.09.2022, 14:27 | #5 | |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
Цитата:
И внезапно вышло так, что исходник от этого немного вырос... |
|
07.09.2022, 14:39 | #6 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Ну конечно же. Когда вы задаете имена кнопок в компонентах, тогда имена кнопок включаются как dfm файл в ресурсы программы и нет лишнего кода создания компонентов. Для воспроизведения формы используется универсальный конструктор, который создает окно по его текстовому описанию. Из-за этого конструктора у вас даже простое приложение с окном весит больше полумегабайта.
Последний раз редактировалось macomics; 07.09.2022 в 14:44. |
07.09.2022, 17:58 | #7 | |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
Цитата:
Вариант 1: Код:
Код:
Код:
Вообще, вариант 2 делался для того, чтобы если какое-то имя повторяется - то чтобы оно было 1 раз прописано |
|
07.09.2022, 19:14 | #8 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
А это разве имеет какое-то значение? Купите диск побольше, если место заканчивается
E-Mail: arigato.freelance@gmail.com
|
07.09.2022, 20:24 | #9 | |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
Больше просто чтобы все было оптимальнее
Цитата:
Потому становится проще создавать многие панели и их элементы из программы. И к слову говоря, если переводить элементы из раздела изначальных в раздел создаваемых - то размер исходника уменьшается |
|
07.09.2022, 21:05 | #10 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
shortstring не считывает 255 символов | mahatmaQL | Общие вопросы Delphi | 6 | 12.04.2014 22:45 |
ошибка [C++ Error] string.h(5): E2344 Earlier declaration of 'String' | Pein95 | C++ Builder | 2 | 02.04.2013 21:18 |
ShortString → PChar | Alex Cones | Общие вопросы Delphi | 4 | 22.08.2010 14:08 |
Как получить адрес String строки или преобразовать String | madboy4ik | Общие вопросы по Java, Java SE, Kotlin | 6 | 15.01.2010 11:57 |