Набор(6 шт) компонентов для работы с типами, описание:
Type_Create - создает новый тип
Type_Add - добавляет переменные в существующий тип
Type_Set - устанавливает значение существующих переменных
Type_MultiMem - извлекает значения выбранных переменных
Type_Delete - Удаляет переменные из типа
Type_Array - позволяет работать с типом как с массивом
Более подробное описание в схеме, хелп я рисовал(именно рисовал) впервые, так что не пинать
В архиве есть иконка type.ico для вкладки Type, ее можно положить в ElementsDelphi abs
Скачать последнюю версию(лучше всего пользоваться последней версией с SVN)
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
карма: 10 |
| ||
файлы: 1 | type.rar [14.9KB] [489] | ||
Голосовали: | Administrator, Genius, 3042, Konst, filyaxxxcom, miver, sla8a, Poputchik |
Ответов: 1304
Рейтинг: 405
|
|||
Assasin, пинать не буду если скажешь где взять ShareMyType.pas .
|
|||
карма: 3 |
|
Ответов: 8
Рейтинг: 1
|
|||
где взять? Fatal: File not found: 'ShareMyType.dcu'
------------ Дoбавленo в 23.48: будем пинать если не дашь нам ентот файл... |
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
подход конечно интересный. Думаю такие элементы давно бы уже появились, если бы не слишком большой процент попадания DesignTime информации в конечное приложение. Поэтому МТ явилось некой альтернативой между удобством и эффективностью.
Замечания же после беглого осмотра можно сделать какие: 1) по onError мы давно уже выдаем коды ошибок, а тексты приводим в справке - это более универсально 2) в именах свойств лучше не использовать знак _ 3) не совсем ясна полезность св-ва GType_Enabled |
|||
карма: 27 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
MAV писал(а): пинать не буду если скажешь где взять ShareMyType.pasЯ по этой причине почему-то проснулся ночью, проснулся и вспомнил "забыл в архив добавить ShareMyType.pas!" Вот он заветный файл для уже скачавших архив выше, архив также перезалил ShareMyType Dilma, 1) хорошо, это поправлю, но только справку то я нарисую, а посмотреть ее никто не сможет, если только ее при установке компонентов не скопировать в Help 2) Исправил 3) Это свойство полезно в следующем code_15822.txt ------------ Дoбавленo в 08.35: Да, кстати, я еще добавил имени не быть чувствительным к регистру, так что лучше заново скачать архив из первого поста ------------ Дoбавленo в 08.44: Dilma писал(а): слишком большой процент попадания DesignTime информации в конечное приложениеПоподробнее, что еще за DesingTime? ------------ Дoбавленo в 11.30: Еще раз перезалил архив: Исправлен баг : Type_Create - невозможно очистить тип методом doClear Для тех кто скачал: Заменить файл ElementsDelphicodeType_Create.pas на этот |
|||
карма: 10 |
| ||
файлы: 3 | sharemytype.rar [1KB] [309], code_15822.txt [1.7KB] [448], hitype_create.rar [724B] [331] |
Ответов: 1926
Рейтинг: 172
|
|||
Assasin писал(а): Поподробнее, что еще за DesingTimeЭто время проектирования прогрммы, то есть сборка в среде. RunTime - это уже время запущенной программы. Зачем нужна верхняя точка GType, если в почти каждом компоненте есть параметр Name, где указыватся имя типа? Можно сделать его как менеджер, чтобы не было никаких точек GType и FType. ------------ Дoбавленo в 15.48: И ещё: мне непонятна суть компонентов, т.е. для чего они могут быть использованы. Ведь новый тип переменной обычно отличается действительно новым типом хранимых данных (типа "картинка", "текст"). |
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
3042 писал(а): Можно сделать его как менеджер, чтобы не было никаких точек GType и FType.вероятно реализация менеджера в данном случае была бы не самым удачным решением, поскольку данные могут быть полностью переданы в потоке(как и стандартные Stream). 3042 писал(а): И ещё: мне непонятна суть компонентов, т.е. для чего они могут быть использованы.с точки зрения разработчика схемы предложенные элементы представляют улучшенный вариант МТ: - каждое звено имеет имя - и как следствие не привязано к строго определенному место в цепи(т.е. при считывании не нужно знать, где именно находится переменная) ну и очевидно, что назначение такое же как у МТ. Однако за счет наличия имен можно придумать и более интересные решения. ------------ Дoбавленo в 16.05: так же стоит добавить, что такой вариант МТ оптимальным образом переносится на пакеты класса FTCG и является гораздо более предпочтительнее классического решения - там проблем с избыточной информацией в RunTime нет. |
|||
карма: 27 |
| ||
Голосовали: | 3042, Konst |
Ответов: 1926
Рейтинг: 172
|
|||
То есть, это что-то типа записей в Pascal, где каждое поле имеет своё имя и может иметь любой тип.
|
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
3042, ну Assasin в туториале именно так и описывал
|
|||
карма: 27 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Dilma, а кто мешал в структуре TData ввести поле Name, тогда каждые переданные данные могли бы быть именованы. В структуре MT-потока, в таком случае, можно было бы именовать каждую цепь. Или это -- не так
|
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
nesco писал(а): а кто мешал в структуре TData ввести поле Namenesco, тормознутости текущей реализации пакета стало мало? |
|||
карма: 27 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Dilma писал(а): тормознутости текущей реализации пакета стало мало?Гы. Тормознутости хватает, но не думаю, что предложенная выше реализация (Type) будет работать быстрее И как может лишнее поле сильно влиять на быстродействие, если мы передаем указатель на структуру, а не саму структуру, если только не копируем их, как при MT |
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
nesco писал(а): Тормознутости хватает, но не думаю, что предложенная выше реализация (Type) будет работать быстрееречь идет не о реализации Type - речь идет о работе схем, в которых это вообще не используется nesco писал(а): И как может лишнее поле сильно влиять на быстродействие, если мы передаем указатель на структуру, а не саму структуру, если только не копируем их, как при MTрассмотрим простой код из Share.pas
|
|||
карма: 27 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Да, все правильно, для локальных структур это существенно влияет на быстродействие, все верно ты написал. У меня совсем вылетело из головы, что под локальные переменные выделяется память, которая при уничтожении экземпляра, должна быть возвращена
|
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
nesco писал(а): У меня совсем вылетело из головы, что под локальные переменные выделяется память, которая при уничтожении экземпляра, должна быть возвращенане совсем так. Если переменная или структура состоит из простых типов данных(байт, слово, двойное слово и т.д.), то память под нее выделяется в стеке одной командой процессора путем изменения адреса в единственном регистре. При этом количество локальных переменных или полей в структуре совершенно ни на что не влияет, кроме значения приращения стекового регистра. Для освобождения памяти этот самый регистр еще раз инкрементится, но в обратную сторону. Так что тип добавляемого поля тут является главным критерием снижения производительности. |
|||
карма: 27 |
|