|
|
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Задача такова: Имеется DFM-файл-файл стандартной структуры Delphi, и в него нужно записать строку в виде "OnClick = NewForm1Click" перед словом "end". Как это сделать? Образец DFM-ФАЙЛ-файла: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 23:57 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DefineProperty ? Как добавить в поток эту строку?, при чем эта строка должна относиться к этому объекту.....? Отесать если там Memo или ListBox, то строка должна относиться к его описанию, перед словом end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:26 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
У меня есть процедура для очистки строки DFM-файл... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Но как ее присвоить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:32 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Осталось 1:12 Как вписать в DFM-файл -файл эту строку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:35 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Если не пить пиво и не гулять по-девочкам, то мозг начинает работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:38 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Вы не должны заниматься сериализацией компонентов. Компоненты это умеют делать сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:39 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, Дима, это делается не по средствам среды. Как Делфи добавляет ссылку на обработчик событий в DFM-файл файл ,- "OnClick = NewForm1Click" , при чем добавляет ее в нужное место для нуд6ого компонента. Вам ведь известен мой проект?, да, он вам известен. Готовность 90%. Остался маленький обработчик событий, код которого , будет общим... Короче , как мне вписать эту строку в DFM-файл ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:45 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, Не умеют,!!! Или не полностью. Почему тогда, при сохранении формы в поток со всеми его свойствами, - все сохраняется за исключением событий - методов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:47 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Сериализацией объектов занимается TWriter/TReader Бессмысленно придумывать собственный механизм, если уже таковой есть. Сначала придумайте как прочитать событие и показать его в дизайнере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:51 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Linux_64Почему тогда, при сохранении формы в поток со всеми его свойствами, - все сохраняется за исключением событий - методов ? Если события есть (назначены) и не сохраняются, то что мешает поставить бряку и посмотреть почему это происходит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:53 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, да, мой код не идеален. Над оригиналом трудились с десяток профи, А я всего лишь любитель... Возможна ли альтернатива? Я компилировал файл Unit1.pas с Unit1.dfm, предварительно внеся в файл DFM-файл строку со ссылкой (указателем на метод) "OnClick = NewForm1Click" и после этого компилировал весь проект, в итоге обработчик события , а он прописан в pas-файле срабатывал, но эту строку я вносил вручную в DFM-файл-файл. Как мне это а№томотизировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:06 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Как автоматизировать ? А как ваш инспектор отображает события ?Где эти события у вас хранятся ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:10 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Мне просто нужно перед компиляцией внести нужную строку в нужное место, как правило перед end. Если это не только дерево TreeView, там сложнее, Если я добавил обработчик OnChahge для Мемо или OnClick для кнопки, то соответствующее описание попадает в DFM-файл, при чем обратите внимание!!!, перед словом end, нужного объекта, которому присваивается ссылка на обработчик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:14 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Повторяю, компоненты сами знают как себя сохранить. Не нужно это делать снаружи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:17 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Linux_64, в инспекторе присваивается ссылка - указатель на метод, если ссылка отсутствует, то присваивается свойству значение nil, в противном случае указывается адрес указателя, по сути это просто строка с адресом, она не привязывает обработчик к ссылке, а вот сама среда Делфи это делает посредством DFM-файл файла и определенной строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:18 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
А если метода ещё нет. Его только создали в дизайнере (в текстовом виде), куда указывает ссылка ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:20 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, Отлично!, но где тогда строка "OnClick = NewForm1Click", перед словом end? - именно она указывает на связь между скажем кнопкой и обработчиком в коде модуля pas. Кнопка не знает, что ей присвоен указатель и что обработчик содержит кучу строк кода при нажатии на эту кнопку, нет привязки, нет ссылки на этот обработчик, нет ярлыка если хотите, но где моя строка в FFM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:23 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Откуда вообще берутся ссылки на метод, если у вас ДВА текстовых файла ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:24 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, Дмитрий, я понятия не имею, как разработчики Боллэнд это сделали. Мне удалось выяснить, что строка "Button1Click" в инспекторе объектов это всего лишь строка для пользователя и флаг того, что ссылка создана , ссылка на обработчик Procedure TForm1.Button1Click.... Так вот, строка Button1Click каким то образом попадает в DFM-файл файл. Элли события это тоже свойства компонента, то почему ее нет в файле?, там сохраняются только свойства не имеющие значения по- умолчанию... мы можем обмануть судьбу и решить задачу не так как это сделала Борлэнд ? . Как добавить строку в DFM-файл перед словом end, при условии, что она будет относиться к "своему" объекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:32 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, в смысле ?, какие два текстовых файла? - DFM файл и pas , что ещё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:35 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Вы похоже меня не слышите. Вы в дизайнере кликаете на кнопке, при этом в коде создаётся процедура, а в инспекторе показывается что на событие OnClick привязана процедура ButtonClick. До сохранения ещё далеко. У вас это работает ? Откуда в вашей NewForm1.OnClick = 004ECE40 ? Это что за адрес ? У вас есть DFM файл, вы его прочитали (каким то образом). Откуда взялся адрес процедуры ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:38 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Linux_64, О Боги.... Код: pascal 1. 2. 3. 4. 5. 6. Посредством этого кода я присваиваю указатель на метод события OnDblClick, но В файл сохраняются все свойства , которые я изменил или не трогал, но абсолютно нет намёка на событие.... где оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:42 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
То есть вы копилируете форму, создаёте её и получаете указатель на метод ? А новый метод, который вы ручками напишите в коде, где указатель на него ? Он существует только в текстовом виде, в скомпилированной форме его нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:46 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Linux_64, Да, у меня это работает, создаётся обработчик событий в редакторе кода со всеми параметрами, без проблем, так же эта строка с именем процедуры прпадает в описание класса формы, так же как это делает обычная Делфи. Хвала Богу, я додумался как в нужную строку редактора прописывать нужный обработчик со всеми его параметрами. Тем временем , в Инспектор объектов присутствует адрес указателя или виде строки, я могу это переключить в настройках инспектора. Дело все в том, что это просто строка с адресом . Когда в оригинале создаётся событие, то во первых создаётся обработчик в коде, при чем обратите внимание, это происходит перед конечным словом end. Добавляется строка-описание в класс формы, короче в раздел интерфейса, в инспектор д*бавляется строка с именем метода, но это всего лишь строка и наконец в DFM-файл - файл добавляется строчка типа OnClick = Button1Click ..... ???? Как ее добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:52 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
авторДело все в том, что это просто строка с адресом Куда указывает этот адрес ? Если в NewForm ещё нет такого метода ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:55 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, так, надо соображать на трезвую голову. Мозг не работает. Завтра с утра продолжим, может кто-нибудь что ещё посоветует. Адрес указывает в никуда..., хотя может он и верный, но он не делает никакой привязки обработчика в модуле .pas, это просто TM.Code... только в виде строки. Все свойства добавляются в файл DFM-файл, так же как и в оригинале, но нет методов.... Ладно, утро вечера мудрёнее... Может что-нибудь придумаем. Спасибо за помощь! Доброй ночи ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 02:14 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
авторАдрес указывает в никуда..., Если адрес в никуда, то почему должно что-то записываться ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 02:17 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Вернёмся к нашим баранам... Присваиваются значения свойств для любой категории типов, кроме tkMethod. Если вручную создать обработчик в коде pas для события OnDblClick и до компиляции внести вручную изменение в dfm строку OnDblClick = NewForm1DblClick , то компиляция проходит успешно, создаётся .dcu и теперь если скомпилировать весь проект, то при двойном клике на форме обработчик срабатывает. Все в порядке, но как это автоматизировать? Каким образом среда Делфи вносит в dfm файл эту строку? Вот как от неё избавиться я знаю, а как добавить? Вырезка из кода: Код: 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. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 08:55 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Это ж надо дожиться до того, что вечером ты спаиваешь девушку не для того, что бы затащить ее в постель, а что бы она поскорее уснула, а ты тихонько включил ее комп, установил Делфи и бредил о каких то там методах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 09:33 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2039003]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 486ms |

| 0 / 0 |
