|
|
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
В известной Graphics32 Library есть unit GR32_Backends_Generic с классом: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Для своих нужд хочется использовать класс TMemoryBackend с измененным цветом с clBlack32 (=$FF000000) на $00000000. К примеру, TCustomBitmap32.Create() создает экземпляр с дефолтным бэкендом = TMemoryBackend. Вот чтобы он и дальше его создавал, но с измененным цветом. Можно ли и как это сделать не меняя исходников, не закидывая модфицированный GR32_Backends_Generic.pas в папку своего проекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 14:29 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
унаследуйся и перекрой метод. в чем проблема то? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 14:34 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийунаследуйся и перекрой метод. в чем проблема то? Но я же не могу написать унаследованный класс как TMemoryBackend = class(TMemoryBackend). Или могу? Имя класса не должно поменяться, вот в чем затык... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 14:44 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
04.03.2019 14:44, LiYing пишет: > Имя класса не должно поменяться поцчему? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 14:48 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
LiYing, В относительно современных версиях Delphi появилась возможность в таких случаях достаточно элегантно выкручиваться через т.н. хелперы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 14:48 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий04.03.2019 14:44, LiYing пишет: > Имя класса не должно поменяться поцчему? Это класс используется в недрах самой библиотеки. К примеру, в GR32.pas вызывается в Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Написал свой перехватчик класса: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Добавил этот модуль после GR32_Backends_Generic, но все равно используется родной метод InitializeSurface, а не мой модфицированный. Ничего нельзя сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 15:14 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
LiYing, что-то вроде, не? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 15:29 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
ma1tusLiYing, что-то вроде, не?[src delphi] Можно и так, но interceptor class (aka interposer class) элегантнее выглядит :) В принципе все работает. Просто хотелось, чтобы запись TCustomBitmap32.Create() использовала мой модифицированный TMemoryBackend, но используется родной класс. Приходится явно указывать TCustomBitmap32.Create(TMemoryBackend), тогда используется мод.TMemoryBackend. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 15:37 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
LiYinginterposer class) элегантнее выглядит O'RLY ? interposter class работает по одной единственной причине - древний баг в обработке DFM, который боятся или не хотят исправлять. завязывать свой код на детали реализации (более того, на недостатки реализации) - это элегантно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 16:00 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
LiYingПросто хотелось, чтобы запись TCustomBitmap32.Create() использовала мой модифицированный TMemoryBackend и обязательно interposter'ом ? в принципе вполне возможно, надо просто сделать, чтобы TCustomBitmap32.Create грузил себя из DFM, а не создавал всё кодом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 16:01 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
Ariochнадо просто сделать, чтобы TCustomBitmap32.Create грузил себя из DFM, а не создавал всё кодом Можно развернуть мысль или примерчик как это сделать? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 16:28 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
ну как, переписываешь этот класс его на манер TComponent, чтобы он использовал TReader, а все свойства у него были Published, ну и DFМ к нему пишешь ручками скорость будет такая, что даже самые дорогие процессоры колом встанут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 17:09 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
Ariochскорость будет такая, что даже самые дорогие процессоры колом встанут Тогда ну его нафиг, измененный юнит в папке проекта - просто и надежно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 18:21 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
авторЭто класс используется в недрах самой библиотеки. К примеру, в GR32.pas вызывается в Какое отношение это имеет к классу TMemoryBackend если он в недрах библиотеки работает с TCustomBackend? Делаете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 18:41 |
|
||
|
Изменить параметр не меняя исходников чужой библиотеки
|
|||
|---|---|---|---|
|
#18+
LiYing Просто хотелось, чтобы запись TCustomBitmap32.Create() использовала мой модифицированный TMemoryBackend, но используется родной класс. Приходится явно указывать TCustomBitmap32.Create(TMemoryBackend), тогда используется мод.TMemoryBackend. Странная прихоть, для вас собственно и сделали слабую зависимость классов, чтобы через конструктор можно было переопределить реализацию. В чем именно особенность использования конструктора без параметров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 18:44 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=80&tid=2039730]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
113ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 393ms |

| 0 / 0 |
