Форум: "Начинающим";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];
ВнизShortString в С++ Найти похожие ветки
← →
@!!ex © (2009-04-28 19:39) [0]Делаю софтину, которая умеет подключать плагины.
Одна из функций возвращает ShortString.
Нужно будет делать интерфейс и для плагино писателей на С++, вот и возник вопрос, как в С++ обозначить функцию возвращающую ShortString.
← →
Rouse_ © (2009-04-28 20:03) [1]
struct ShortString {
unsigned char Length;
char[255] Data;
}
← →
@!!ex © (2009-04-28 20:18) [2]спасибо! про длину я забыл, хотел просто массив объявить. хорошо что спросил. :)
← →
palva © (2009-04-28 23:10) [3]Хорошо бы для нулевого байта предусмотреть место
char[256] Data;
Мало ли, в среде си пригодится.
← →
DVM © (2009-04-28 23:14) [4]
> @!!ex © (28.04.09 19:39)
Может лучше все же избавиться от именно ShortString? А делать как в WinAPI?
← →
Германн © (2009-04-29 00:50) [5]
> DVM © (28.04.09 23:14) [4]
>
>
> > @!!ex © (28.04.09 19:39)
>
> Может лучше все же избавиться от именно ShortString? А делать
> как в WinAPI?
>
+1
← →
Rouse_ © (2009-04-29 09:26) [6]
> Хорошо бы для нулевого байта предусмотреть место
> char[256] Data;
> Мало ли, в среде си пригодится.
А Length там для чего? :) Если делать char[256] - то размерчик поплывет :)
← →
@!!ex © (2009-04-29 10:18) [7]> [4] DVM © (28.04.09 23:14)
Чем лучше?
← →
DVM © (2009-04-29 11:15) [8]
> @!!ex © (29.04.09 10:18) [7]
> Чем лучше?
Тем что писателям плагинов на разных языках придется совершать меньше телодвижений. Да и привычнее это имхо. Это во-первых.
Во-вторых, я все же, считаю неправильным поход, когда такая функция сама возвращает строку, сама же выделяя под нее память и т.д. Мне кажется вернее передавать в функцию указатель на буфер в памяти, в котором уже распределено места ровно столько сколько надо для приема строки. А сколько надо распределить, может вернуть та же функция при передаче в нее nil вместо указателя на буфер. Может так сложнее, но так имхо универсальнее.
← →
Anatoly Podgoretsky © (2009-04-29 11:30) [9]> DVM (29.04.2009 11:15:08) [8]
При ShortString по определению никакой памяти в ран тайм не выделяется, она по определению должна быть выделена на этапе компиляции. В остальном согласен.
← →
@!!ex © (2009-04-29 11:59) [10]> При ShortString по определению никакой памяти в ран тайм
> не выделяется, она по определению должна быть выделена на
> этапе компиляции.
Поэтому и ShortString, а не String.
> [8] DVM © (29.04.09 11:15)
1) Как раз таки наоборот. Подключаешь интерфейс, вызываешь функцию, получаешь строку. На любом языке. В случае же буффера, ты должен еще этот буффер создать и выделить под него место. Что требует больше телодвижений. То что использование ShortString - Это не стандарту - согласен, но зато это удобнее. И самое главное - быстрее. Потому что функции возвращающие строку - сами довольно не быстрые, им нгужно эту строку найти в списке(пускай и не большой список, но всеже)и вернуть. Для того, чтобы узнать нужный размер - все равно надо найти и вернуть. Конечно можно выделять заранее нмого места, но чем это лучше использования ShortString?
2) Анатолий уже ответил. Если бы речь шла о выделении памяти, то и речи бы не было. Суть как раз в том, что памятью программист вообще может не управлять. Все делается в рамках стандартных возможностей по автоматическому созданию и очистке.
← →
DVM © (2009-04-29 12:04) [11]
> Anatoly Podgoretsky © (29.04.09 11:30) [9]
> При ShortString по определению никакой памяти в ран тайм
> не выделяется
Да я знаю, я просто обобщил так сказать подход
← →
DVM © (2009-04-29 12:06) [12]
> @!!ex © (29.04.09 11:59) [10]
> 1) Как раз таки наоборот.
Ну может быть. Если ты 100% уверен, что потом длинных строк не появится, оставляй как есть. Иначе потом переделать будет уже невозможно, т.к. будет понаписано куча плагинов.
← →
Anatoly Podgoretsky © (2009-04-29 13:13) [13]Ничего не сказано о природе плагинов, но длинные строки явно не очень подходят. Или ShortString или PChar - второе явно предпочтительнее, для плагинов на любом языке.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c