Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
Господа, возможно, для Вас совершенно дурацкий вопрос: - имеется класс, активно юзающий одно из своих свойств типа Record (какой-то структуры). - все нормально, но нужен такой же класс, у которого это свойство типа Record bvttn совершенно другую структуру. - дело решается позорным методом "copy-paste". Понадобилось еще два класса. И возможно, потом еще два. Теоретически возможно вместо Record использовать объекты, но, как выяснилось, фактически при активном создании-удалении элементов типа Record время тратится гораздо меньшее, чем при создании экземпляров класса. Так вот вопрос: есть ли в Delphi какая-либо альтернатива шаблонов C++; или более локально - можно ли использовать структуры типа Record, если заранее не известно содержание Record. Внутри класса к полям записи не обращаюсь (только создание и удаление) ??????????????????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 15:11 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
зоздавай abstract классы... в наследниках просто переопределишь типы и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 15:41 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
Как реализовать абстакции? Пример: ------- type TRec1 = Record .... .... end; type TDynArray = class (TComponent) // Динамичесий массив с особым поведением private FGrid: TRec1; function GetGrid(const Row, Col: integer): TRec1; procedure SetGrid(const Row, Col: integer; const Value: TRec1); public property Grid[const Row,Col : integer] : TRec1 read GetGrid write SetGrid; default; ... end; ------------------------ Ну так вот, если другая структура TRec1 - делай Copy/Paste. Ну просто неприлично как-то, в 2004-то году... Как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 15:51 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
В наследниках переопределять типы? В Delphi?? Как??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 15:51 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
а указатель вместо конкретного рекорда если хранить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 15:55 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
Ну, внутри класса создаются/убиваются экземпляры записи. В принципе, для этого достаточно и указателя. Но на конкретный тип (или хотя бы на тип с такой же длиной!)! Никак не выкрутиться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 15:56 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
ну емое ... ну определи память для своих типов и ходи потом туды - храни и извлекай все что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 16:02 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
Типа - определить (ну, например, конструкторе), вызов метода GetRecordSize? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 16:04 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
можно и конструктор с параметром - размер - сделать, наверное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 16:16 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
То есть, как всегда - прощай, безопасность? Хоть на C++ переписывай, чтоб она сдохла... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 16:19 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
не понял. туплю, что-ли? чего "безопасность"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 16:37 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
Да это, похоже, я туплю... Зациклился на хваленой Дельфийской безопасности типов до паранойи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 16:42 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
не трудно привести ещё примерный код вот этого: "Ну, внутри класса создаются/убиваются экземпляры записи"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 17:23 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
... := New(PTRec1); // где PTRec1 = ^TRec1 ... Dispose(...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 17:29 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Вот, правда на C++, код без шаблонов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 17:37 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
Все - пора дамой... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 17:38 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. а хде-то дальше Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ну и далее в том же духе... не пойдёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 17:40 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
2Luchkin Dmitry Вообще-то так делать не надо - тот же VC6 на это бы сказал что-то типа Код: plaintext 1. Во-вторых а чем это поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 17:46 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
чем поможет? уж не знаю... но идея, вроде, такая: один раз описывается класс, который работает с указателями; автор сказал, что тут же экземпляры создаются/удаляются, поэтому то, что создаёт/удаляет выносим отдельно и у наследников переписываем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 17:52 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
А как работать с таким классом? ведь информации о типе не будет?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 18:01 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
там, где работают с экземпляром класса уже известен конечный тип (как я понял). (Это где и определны методы создания/удаления). Ну и работать там с указателем через приведение к указателю на тип типа так: (хде-то дальше) Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 18:05 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
т.е. потребуется все равно переписать все методы класса и везде поставить приведение типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 18:08 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
не-а. класс работает только с указателями, а тот, кто его использует, приводит к уже известному типу указатель на рекорд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 18:19 |
|
||
|
Аналог шаблонов в Delphi.
|
|||
|---|---|---|---|
|
#18+
Неплохая реализация функционала шаблонов описана здесь: http://www.realcodg.net/index.php?articles&id=420 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 09:16 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=1964&tid=2115109]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 396ms |

| 0 / 0 |
