|
Область видимости
|
|||
---|---|---|---|
#18+
Добрый день. Сразу прошу меня извинить за сильно банальную тему, но столкнулся с непонятной для меня ситуацией. Итак есть проект, в нем два модуля - модуль данных (DataModule) и главная форма приложения (MainForm). В MainForm в разделе public помещаю процедуру Proc1, в раздел USES DataModule прописываю MainForm. Но если где-либо в модуле DataModule стоит написать вызов MainForm.Proc1, то возникает ошибка, что Proc1 не объявлена - просто ума не приложу в чем косяк случился? Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2021, 10:17 |
|
Область видимости
|
|||
---|---|---|---|
#18+
show me the code ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2021, 10:46 |
|
Область видимости
|
|||
---|---|---|---|
#18+
MainForm Код: 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.
MainModule Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2021, 11:10 |
|
Область видимости
|
|||
---|---|---|---|
#18+
patrick1968, Советую давать классам более осмысленные и уникальные названия, возможно имя MainForm еще где-то объявлено и обозначает что-то другое.. Для начала попробовать обращаться Main.MainForm И циклические ссылки между модулями это плохо для приложения, состоящего больше чем из пары форм ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2021, 11:27 |
|
Область видимости
|
|||
---|---|---|---|
#18+
swame2 И циклические ссылки между модулями это плохо Чем же? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2021, 23:26 |
|
Область видимости
|
|||
---|---|---|---|
#18+
softwarer, мозг зацикливается. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2021, 23:48 |
|
Область видимости
|
|||
---|---|---|---|
#18+
(OFF-TOPIC) Я немного не врубаюсь, это в современных Делфях что ли заменили глобальную переменную инстанса формы на функцию с таким же именем? Код: pascal 1.
раньше было так: Код: pascal 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 01:55 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Кроик Семён, Это фишка UniGUI: там инстанс формы не один на приложение а один на сессию. Вот вместо простой глобальной переменной и используется функция. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 02:05 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Кроик Семён (OFF-TOPIC) Я немного не врубаюсь Это UniGUI. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 02:06 |
|
Область видимости
|
|||
---|---|---|---|
#18+
rgreat, northener, ясно, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 02:14 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Кроик Семён rgreat, northener, ясно, спасибо А вот мне нифига неясно. На кой хрен оно, это UniGUI кому-то нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 02:47 |
|
Область видимости
|
|||
---|---|---|---|
#18+
northener А вот мне нифига неясно. На кой хрен оно, это UniGUI кому-то нужно. И сколько ты заплатишь за то, чтобы кто-то развеял твоё недоумение? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 03:03 |
|
Область видимости
|
|||
---|---|---|---|
#18+
softwarer northener А вот мне нифига неясно. На кой хрен оно, это UniGUI кому-то нужно. И сколько ты заплатишь за то, чтобы кто-то развеял твоё недоумение? Ни одной копейки! :) Меня и так всё устраивает. Но тот, кто что-то новое предлагает, должен убедить меня, что мне это нужно! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 03:21 |
|
Область видимости
|
|||
---|---|---|---|
#18+
northener Но тот, кто что-то новое предлагает, должен убедить меня Ты правда думаешь, что кому-то зачем-то сдался, или просто косплеишь бабу с сайта знакомств? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 03:33 |
|
Область видимости
|
|||
---|---|---|---|
#18+
northener, а если не uniGUI, то что? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 09:26 |
|
Область видимости
|
|||
---|---|---|---|
#18+
softwarer, Если забыть о красивости архитектуры, при нескольких десятках зависимостей в проекте уже начинает тормозить компилятор, IDE еще раньше, потом с какого то момента вообще не может перекомпилить проект без Build. Скорость компиляции может упасть в разы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 09:34 |
|
Область видимости
|
|||
---|---|---|---|
#18+
swame2, бред какой-то. почти сотня унигуевых форм, почти миллион строк кода в проекте, полет нормальный. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 09:40 |
|
Область видимости
|
|||
---|---|---|---|
#18+
makhaon, Имеет значение не количество форм, а количество циклических ссылок. Сотня форм может еще не дать критическое число, вопрос какие между ними ссылки. У нас заметные проблемы были лет 10 назад, проект бы примерно 600К строк, 500 модулей. При возрастании количества циклических ссылок выше нескольких сотен зависимостей скорость компиляции на Delphi 7 быстро выросла с 25 с до 3 мин. На Delphi2010 этот проект вообще не мог скомпилиться, более новые компиляторы более чувствительны к этой проблеме. Сейчас 1,5М строк, 2500 модулей, все компилится отлично, потому что циклические зависимости развязаны, осталось несколько десятков. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 10:06 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Люди придумали библиотеки давным-давно... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 11:02 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Так вроде в одном проекте нельзя создать два класса с одинаковыми именами, а то точно путаница будет, стало быть проблема не в этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 11:37 |
|
Область видимости
|
|||
---|---|---|---|
#18+
patrick1968, можно ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 12:10 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Классы(типы) с одинаковыми именами есть даже в RTL. К сожалению. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 12:14 |
|
Область видимости
|
|||
---|---|---|---|
#18+
patrick1968 Так вроде в одном проекте нельзя создать два класса с одинаковыми именами, а то точно путаница будет, стало быть проблема не в этом. нельзя создать в одном юните [DCC Error] E2004 Identifier redeclared: ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 13:22 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Странно и удивительно одно - если создаю еще форму, то процедура из MainForm прекрасно видна и работает, а вот из DataModule нет, зато из DataModule видны процедуры новой формы - посему неясно в чем отличие MainForm и новой формы. Ведь в UNIGUI нет понятия, главной формы, интересно тогда откуда приложение понимает - какую форму вызывать как основную ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2021, 18:04 |
|
Область видимости
|
|||
---|---|---|---|
#18+
patrick1968 Странно и удивительно одно - если создаю еще форму, то процедура из MainForm прекрасно видна и работает, а вот из DataModule нет, зато из DataModule видны процедуры новой формы - посему неясно в чем отличие MainForm и новой формы. Ведь в UNIGUI нет понятия, главной формы, интересно тогда откуда приложение понимает - какую форму вызывать как основнуюСм. скриншот. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2021, 18:24 |
|
Область видимости
|
|||
---|---|---|---|
#18+
northener softwarer пропущено... И сколько ты заплатишь за то, чтобы кто-то развеял твоё недоумение? Ни одной копейки! :) Меня и так всё устраивает. Но тот, кто что-то новое предлагает, должен убедить меня, что мне это нужно! :) Это новое скоро сдуется окончательно. Под десктоп разрабатывать недальновидно, а под смартфоны непонятно как. Видимо автор юнигуя сам это практически не использует, а в основном прибыль считает. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2021, 21:22 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Добрый день. Получилось вызвать процедуру Proc1 из MainForm в DataModule путем указания имени модуля Main.MainForm.Proc1 вместо привычного MainForm.Proc1. В процедуре должен изменяться внешний вид объектов и если вызывать ее из другой формы, то всё нормально, а вот если из MainModule, то объекты не обновляются. Почему так происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 09:29 |
|
Область видимости
|
|||
---|---|---|---|
#18+
patrick1968, что-то в коде у тебя не так... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 08:02 |
|
Область видимости
|
|||
---|---|---|---|
#18+
softwarer swame2 И циклические ссылки между модулями это плохо Чем же? UniMainModule.GetFormInstance, я так полагаю, использует threadvar ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 14:41 |
|
Область видимости
|
|||
---|---|---|---|
#18+
kealon(Ruslan) пример автора как раз сойдёт за пример почему нельзя (извиняюсь за тавтологию) UniMainModule.GetFormInstance, я так полагаю, использует threadvar Какая связь? Любой код с циклическими ссылками можно переписать без циклических ссылок. В самом дурном случае - просто упаковывая всё в один модуль. И threadvar останется threadvar-ом, и GetFormInstance - GetFormInstance-ом. Но станет ли код от такого переписывания лучше? Мягко говоря - не факт. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 17:16 |
|
Область видимости
|
|||
---|---|---|---|
#18+
softwarer, переписать - можно, и будет работать не переписать - будет глючить проблема в том, что не все модули могут корректно работать без инициализации помещая подключение модуля в implementation вы "говорите компилятору", что вам неважно, инициализируется ли модуль или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 20:23 |
|
Область видимости
|
|||
---|---|---|---|
#18+
kealon(Ruslan) переписать - можно, и будет работать не переписать - будет глючить В кривых руках всё будет глючить. kealon(Ruslan) помещая подключение модуля в implementation вы "говорите компилятору", что вам неважно, инициализируется ли модуль или нет. Удивительно, что вот уже 32 года, как я ему это "говорю", а он всё делает правильно и не создаёт проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 20:31 |
|
Область видимости
|
|||
---|---|---|---|
#18+
kealon(Ruslan)помещая подключение модуля в implementation вы "говорите компилятору", что вам неважно, инициализируется ли модуль или нет. А можно тут ссылку на документацию. Потому что для меня это мягко говоря новость. Хоть я не 32 года помещаю, но тоже не мало ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 20:45 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Michael Longneck, ну а как вы по другому сделаете? либо исправляете ошибку, либо берете ответственность на себя ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 21:59 |
|
Область видимости
|
|||
---|---|---|---|
#18+
softwarer kealon(Ruslan) помещая подключение модуля в implementation вы "говорите компилятору", что вам неважно, инициализируется ли модуль или нет. Удивительно, что вот уже 32 года, как я ему это "говорю", а он всё делает правильно и не создаёт проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 21:59 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Michael Longneck А можно тут ссылку на документацию. Потому что для меня это мягко говоря новость. Хоть я не 32 года помещаю, но тоже не мало Коллега имеет в виду тот факт, что если перегрузить секции initialization/finalization лишним функционалом с перекрёстными вызовами, можно нарваться на ситуацию, когда подпрограммы модуля будут вызваны "до initialization" или "после finalization". При этом он игнорирует тот факт, что если более-менее адекватно размещать всё на своих местах, такого не возникает даже при отсутствии специального внимания к этому вопросу. С его точки зрения архитектурная вменяемость - вопрос везения. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 03:46 |
|
Область видимости
|
|||
---|---|---|---|
#18+
softwarer, Michael Longneck, С моей точки зрения лучше получить ошибку компилятора circular link и исправить, чем получить непонятное поведение на большом проекте "Явное лучше, чем неявное" (С) ... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 08:58 |
|
Область видимости
|
|||
---|---|---|---|
#18+
softwarerКоллега имеет в виду тот факт, что если перегрузить секции initialization/finalization лишним функционалом с перекрёстными вызовами, можно нарваться на ситуацию, когда подпрограммы модуля будут вызваны "до initialization" или "после finalization". При этом он игнорирует тот факт, что если более-менее адекватно размещать всё на своих местах, такого не возникает даже при отсутствии специального внимания к этому вопросу. С его точки зрения архитектурная вменяемость - вопрос везения. Я понял...это надо немало кода с внешними зависимостями вписать в эти секции, чтобы получить такое. Никогда так не делал и вообще рассматривал как место для самых простых инициализаций. Чтобы не важен порядок был. Иначе это ещё одна головная боль. К сожалению. class constructor тоже по факту там вызывается. Но визуально более правильно, ИМХО, нет желания вписать туда не относящееся к классу ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 09:46 |
|
Область видимости
|
|||
---|---|---|---|
#18+
Michael Longneck, Когда проект большой, банальные ситуации вроде добавки кэша могут привести к непонятным багам, ну и зачем такие проблемы, лучше исключить их изначально, без плюсовых крайностей вроде "инициализацию делаем тут-то тут-то, вручную". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 10:11 |
|
Область видимости
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Когда проект большой Большой - не синоним "хреново написанный". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 15:10 |
|
Область видимости
|
|||
---|---|---|---|
#18+
kealon(Ruslan) вам пока везёт ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2021, 00:12 |
|
Область видимости
|
|||
---|---|---|---|
#18+
white_nigger Иногда приходится шаманить с порядком юнитов в секциии uses ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2021, 13:22 |
|
|
start [/forum/topic.php?all=1&fid=58&tid=2037002]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 257ms |
total: | 413ms |
0 / 0 |