Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
#31: 2010-09-18 14:41:11 ЛС | профиль | цитата
Ravilr писал(а):
Например в компоненте разделитель СИМВОЛ или СТРОКА и на основании того какое из свойств пользователь заполнил, такой и будет выполнятся алгоритм, ну или выбор свойства типа Delimiters_Str True или False

Этому соответствует увеличению памяти, занимаемой компонентом, как минимум на 5 байт (boolean и string). Однако могу предложить (только предложить) новшество: добавить тип свойств, которые кодогенератор вставлял в код как
#pas
{$define THI_StrPart_Delimiters_Str}//вот эти строчки
StrPart_76786123 = THI_StrPart.Create;
//...
{$undef THI_StrPart_Delimiters_Str}//вот эти строчки
А в коде компонента как
#pas
public
//...
{$ifdef THI_StrPart_Delimiters_Str}_prop_Delimiters_Str:boolean;{$endif}
//...
Это поможет в экономии кода во многих текущих компонентах, но это может повлиять и на сложность составления компонента. Однако, это изменит и кодогенератор: сначала надо будет просматривать свойства компонента (на наличие "дефайненных" свойств), а потом вызывать конструктор.
------------ Дoбавленo в 14.41:
Все, я понял, что это невозможно
карма: 10
0
Ответов: 1535
Рейтинг: 176
#32: 2010-09-20 12:38:23 ЛС | профиль | цитата
Assasin, а можно по-подробнее, почему невозможно? Хочется услышать именно Ваше мнение. Вроде бы так хорошо начали и вдруг - невозможно.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Разработчик
Ответов: 4698
Рейтинг: 426
#33: 2010-09-20 16:20:41 ЛС | профиль | цитата
Потому что компилятор (любой практически) сначала создает "каркас" класса, и при этом используются активные дефайны, но сам класс создается уже по этому "каркасу", а значит включениевыключение дефайнов при этом уже ни на что не повлияет
------------ Дoбавленo в 16.20:
Максимум чего можно сделать - это сделать глобальную прописку дефайнов с помощью отдельного файла (например "hiDefine.inc"), в котором будут включены все дефайны используемых свойств, но тогда при использовании свойства-дефайна надо будет вставлять в код еще и {$include hiDefine.inc}
Если говорить о программе конечной, то если у тебя есть компоненты StrPart НЕ использующие строковой разделитель: вес программы меньше, но добавь ты хоть один, использующий строковой разделитель, и каждый компонент добавит свои "пять копеек" в код, даже если там не используется строковой разделитель
карма: 10
0
Разработчик
Ответов: 26149
Рейтинг: 2127
#34: 2010-09-20 16:24:37 ЛС | профиль | цитата
Assasin писал(а):
и каждый компонент добавит свои "пять копеек" в код, даже если там не используется строковой разделитель

Ой, млин, и стоит ли все это такого геморройного телодвижения, когда проще поставить один лишний компонент в нужном случае.
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#35: 2010-09-20 16:25:43 ЛС | профиль | цитата
nesco писал(а):
Ой, млин, и стоит ли все это такого геморройного телодвижения, когда проще поставить один лишний компонент в нужном случае.

Вот и я про тоже, что идея моя с дефайнами провальна
карма: 10
0
Администрация
Ответов: 15295
Рейтинг: 1519
#36: 2010-09-20 18:23:09 ЛС | профиль | цитата
проще ввести св-во Mode со значениями CharDelimiter и StringDelimiter да реализовать два алгоритма для каждого случая.
карма: 27
1
Голосовали:Ivann
Разработчик
Ответов: 26149
Рейтинг: 2127
#37: 2010-09-20 18:50:36 ЛС | профиль | цитата
Dilma писал(а):
CharDelimiter и StringDelimiter да реализовать два алгоритма для каждого случая

Вот кто бы еще метод реверса придумал для строкового разделителя
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#38: 2010-09-20 19:38:25 ЛС | профиль | цитата
nesco писал(а):
Вот кто бы еще метод реверса придумал для строкового разделителя
А какая разница с какой стороны строку перебирать ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 301
Рейтинг: 11
#39: 2010-09-20 21:08:06 ЛС | профиль | цитата
Tad писал(а):
А какая разница с какой стороны строку перебирать ?

насколько я понимаю если нужна часть после последнего разделителя - то дешевле с конца. если до первого разделителя - сначала.
карма: 0

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#40: 2010-09-20 21:09:43 ЛС | профиль | цитата
Tad писал(а):
А какая разница с какой стороны строку перебирать ?

Привет, а GetTok перебирет только вперед, с начала, а не с конца
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#41: 2010-09-20 22:36:13 ЛС | профиль | цитата
Писать GetTokRevers.
Хотя само понятие "строковый разделитель" это нонсенс ИМХО
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
41
Сообщение
...
Прикрепленные файлы
(файлы не залиты)