|
|
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Имею первоначальный вариант (Delphi 7) Rx - первоисточник Код: pascal 1. 2. 3. 4. 5. Собственный объект Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Т.е. метод-родитель = virtual метод - дочь = override Имею переход на Delpho 10.3.3 TFDMemTable - использую как первоисточник-родитель Он имеет аналогичный метод, но он не есть виртуален !!!! Соответственно применить описанный выше прием не могу. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Как можно выйти из ситуации - корректировать системный первоисточник не есть хорошо - переписывать метод тоже не очень хорошая мысль, если учесть что он наверняка понят за собой дикий хвост совокупностей и методов родительского объекта Подскажите варианты Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2020, 23:23 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
HOME_X, Overload ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2020, 23:40 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
HOME_X, нет смысла переживать, RX правят все кому не лень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 00:28 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
Не виртуальны метод нельзя переопределить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 00:45 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
HOME_X, есть подозрение, что виртуализация тут не поможет, NativeInt - явно не указатель на буфер произвольной длины. Для начала нужно разобраться, как это стало работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 01:36 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
HOME_X, А reintroduce не поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 07:34 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
Class helper ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 10:00 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
DarkMaster HOME_X, Overload Это "дублирования" метода, а как будет выполняться метод-родитель и метод-дочь ? override - замена метода, где ссылка на родителя + свой алгоритм function TFxIniTable.GetActiveRecBuf(var RecBuf: PChar): Boolean; begin Result:=inherited GetActiveRecBuf(RecBuf); +++++ дописываю алгоритм end Или я не верно понимаю ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 10:35 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) HOME_X, нет смысла переживать, RX правят все кому не лень От Rx отказываюсь Живу по новому - "переход на Delpho 10.3.3" Тут править не хочу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 10:37 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
DimaBr Не виртуальны метод нельзя переопределить. Т.е. переписывать весь класс - вариантов нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 10:39 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис HOME_X, есть подозрение, что виртуализация тут не поможет, NativeInt - явно не указатель на буфер произвольной длины. Для начала нужно разобраться, как это стало работать. Тип привлек внимание - но первично хотел решить вопрос переопределение метода В исходниках нашел только один объект с такой сигнатуров, по сути обработки функционал очень похож на исходники RX соответственно не акцентировал внимания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 10:46 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
Virtual Student HOME_X, А reintroduce не поможет? Компилятор и сборщик отработал нормально А как относительно вызовов метода ? Отработает стандартная переадресация и можно стандартно решить свои "душные" вопросики Так будет работать ? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 10:53 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
HOME_X Так будет работать ? Будет, если вы вызываете этот метод самостоятельно. Родитель его вызывать не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 11:11 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
DimaBr, Дык, если бы ему нужно было вызвать только самостоятельно, то это мог бы быть просто другой новый метод, с другим названием.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 11:44 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
P.S. А, вообще, это напоминает, как медведь в теремок лез.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 12:10 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
Virtual Student HOME_X, А reintroduce не поможет? Вроде получилось как Вы рекомендовали Спасибо Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 14:00 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
Vlad F P.S. А, вообще, это напоминает, как медведь в теремок лез.)) Сравнение не понял ! Вроде Virtual Student дал верный совет Сейчас еще додумаю ... Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 14:02 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
Раз в RX GetActiveRecBuf объявлен как виртуальный, значит его именно в RX и вызывают в тех методах, которые переопределены у TDataset. Смотрим, где он фигурирует и главное для чего, и реализуем у себя подобное. На данный момент содержание топика следующее У меня был один компонент TForm, там был виртуальный метод SetBounds. Теперь у меня совершенно другой компонент TDataset. Как мне переопределить TDataset.SetBounds, если его там нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 14:08 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
reintroduce - это новый одноименный метод скрывающий такой же в родителе Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 14:31 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
HOME_X Вроде получилось как Вы рекомендовали Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. Ваш пример ломается простым Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 15:30 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
DimaBr Ваш пример ломается простым Мой пример АБСОЛЮТНО неверен - так как переназначение указателя на процедуру не происходит Вот верный тест Результат должен быть сначала ShowMessage('Update Child'); ShowMessage('Update Parent'); Чего не происходит....!!!! Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 15:47 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
HOME_X, А зачем вам собственный класс? Вы переходите абсолютно на другой класс, где гарантия что там та же логика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 17:03 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
HOME_X Vlad F P.S. А, вообще, это напоминает, как медведь в теремок лез.)) Сравнение не понял ! Чего непонятного, - там тоже с самого начала было очевидно, что не залезает. Вроде Virtual Student дал верный совет Ну, дык, студент он и есть студент.) Сейчас еще додумаю. Давай-давай, - наблюдаем с интересом.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 17:42 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
HOME_X Мой пример АБСОЛЮТНО неверен - так как переназначение указателя на процедуру не происходит Вот верный тест И этот пример точно так же неверен. Он даже не компилится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 23:00 |
|
||
|
Как переопределить метод объекта virtual->override
|
|||
|---|---|---|---|
|
#18+
DimaBr Он даже не компилится Почему ? Сборка идет нормально и компиляция тоже (могу прислать exe-к) Переопределения метода MyUpdate объекта C реально нет Т.е. цель не достигнута Может есть еще предложения - как то не хочется класс переписывать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2020, 23:49 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=46&tid=2038403]: |
0ms |
get settings: |
6ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 380ms |

| 0 / 0 |
