|
|
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
Код который находит в ////////////1//////////// пытаюсь поместить в ///////////////2/////////// возникает ошибка Incompatible types Почему? Если код оставить там где он сейчас ошибок не возникает Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 13:10 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
Непонятно куда ты чего вставляешь, но обрати внимание на один момент - ты это делаешь в блоке WITH (мать его ), а в блоке ты можешь цеплять совсем не те переменные, которые задумал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 14:04 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
elimpion, Потому что в ////2//// ты пытаешься вызвать Proc.Delete(), а это вообще процедура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 14:08 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
Учись выбирать адекватные имена для переменных и методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 14:21 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
with такого размера - это убиться веником. я отрицательно отношусь к движению запретить with вообще, но with больше 5-6 строк размером - это поиск сюрпризов. и ОЧЕНЬ хорошо, когда ты их находишь уже при компиляции. могло быть ГОРАЗДО хуже, когда видимых ошибок бы никаких не было, просто вместо одной функции вызывалась бы другая. Впрочем, может быть и это тоже есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 14:26 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
Ariochwith такого размера - это убиться веником. я отрицательно отношусь к движению запретить with вообще, но with больше 5-6 строк размером - это поиск сюрпризов. и ОЧЕНЬ хорошо, когда ты их находишь уже при компиляции. могло быть ГОРАЗДО хуже, когда видимых ошибок бы никаких не было, просто вместо одной функции вызывалась бы другая. Впрочем, может быть и это тоже есть. Просто нужно уметь их использовать... Когда у тебя приведение к типу обращение слишком длинное, а операций нужно сделать много. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. VS Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Пример примитивный, но зато понятный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 14:40 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
elimpionКод который находит в ////////////1//////////// пытаюсь поместить в ///////////////2/////////// возникает ошибка Incompatible types Почему? Если код оставить там где он сейчас ошибок не возникает Код: pascal 1. 2. 3. 4. У тебя с момента где начинается с Код: pascal 1. 2. имеется сокращение и "Proc" имеет метод Delete когда ты пишешь Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 14:45 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotPro, вот если просто delete отправить Код: pascal 1. 2. 3. 4. тогда нормально отработает, без ошибок. Если начну в Delete еще условия писать, тогда начинают ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 15:04 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotProПросто нужно уметь их использовать... Когда у тебя приведение к типу обращение слишком длинное, а операций нужно сделать много. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Пример примитивный, но зато понятный. Да-а, пример говорит кое о чём. Например о том, что у тебя дофига связности в проекте. Сразу видно что этот код не должен быть в этом месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 15:11 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
elimpionRackotPro, вот если просто delete отправить Код: pascal 1. 2. 3. 4. тогда нормально отработает, без ошибок. Если начну в Delete еще условия писать, тогда начинают ошибки Proc.Delete это функция твоего Proc := CreateOraStoredProc(AnsiUpperCase('pkgeditproduct.deleteproduct')); Это не твоя переменная Delete. В общем решение твоей проблемы, в том, что нужно переименовать твою переменную из Delete в Del к примеру. Вот тебе полный код, который ты хочешь, попробуй понять свою ошибку. Но я бы на твоём месте начал бы с открытия книги "Библия делфи". Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 15:28 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
DimonkaRackotProПросто нужно уметь их использовать... Когда у тебя приведение к типу обращение слишком длинное, а операций нужно сделать много. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Пример примитивный, но зато понятный. Да-а, пример говорит кое о чём. Например о том, что у тебя дофига связности в проекте. Сразу видно что этот код не должен быть в этом месте. Ты прав, но иногда такое нужно, это был псевдо код. Хорошо, допустим вот Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Симпотичнее, да и читабельнее будет: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Да with удобно использовать когда работаешь с интерфейсами ну или тебе просто что-то записать нужно в тот же TMemoryStream, просто нужно изолировать из with работу с другими переменными или фукнциями(желательно). А в данном посте просто пример плохого объявления переменных. Ну плохим тоном считается использовать переменные с именем Delete Insert Add и прочими совпадениями с разными методами. Короче with придумали не дибилы)) он правда удобен, а мне к примеру, просто необходим. Если не нравится да можно не использовать, но в целом очень удобная вещь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 15:35 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotProПросто нужно уметь их использовать... Когда у тебя приведение к типу обращение слишком длинное, а операций нужно сделать много. ............ VS ............ VS Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. RackotProПример примитивный, но зато понятный.как делать не надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 15:41 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotProПросто нужно уметь их использовать... Когда у тебя приведение к типу обращение слишком длинное, а операций нужно сделать много. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. VS Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Пример примитивный, но зато понятный. Пример неполный. Ложная дихотомия. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 15:50 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotProпросто нужно изолировать из with работу с другими переменными или фукнциями А как это сделать, чтобы Delphi просто не позволил программисту использовать "другую переменную", кроме короткого списка разрешённых? RackotProплохим тоном считается использовать переменные с именем Delete Insert Add нет и прочими совпадениями с разными методами. никакого совпадения в //////1//// нету а в ///////2////// - уже ошибка компиляции и разговор о плохом-хорошем тоне теряет смысл Кстати, лично я отхватил много веселья перетаскивая программу (и разные библиотеки, даже DevExpress 4 пытался) c Delphi 2006 на XE2. куски кода типа Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Ну не было во времена Delphi 3-7-2006 такого метода как TRect.NormalizeRect не-бы-ло. И потому никаких "прочими совпадениями" тоже не было. Много лет не было. А потом появилось. RackotProКороче with придумали не дибилы)) with придумали для обучения программирования в школе, на примере маленьких программок, на языке без классов-методов (и не помню были ли там указатели на процедуры-функции изначально) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 16:37 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotProКороче with придумали не дибилы я вот тоже удивляюсь, откуда тут взялось множественное число, если имя человека, который придумал with, общеизвестно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 16:56 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
AriochПример неполный. Ложная дихотомия. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Да но я хотел показать простой пример с длинными названиями, когда у вас Код: pascal 1. 2. 3. 4. 5. Да и пример с var ваш имеет место быть, да и правильнее. Но я, на пример, намеренно говнокодю когда: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. И позже когда сюда вернёшься, не очень удобно будет листать "милион милион алых строк", что бы убрать или заменить тот самый var. Так что мой вердикт такой, используйте всё что хотите, главное, что бы это было читабельно и понятно всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:02 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
AriochRackotProКороче with придумали не дибилы я вот тоже удивляюсь, откуда тут взялось множественное число, если имя человека, который придумал with, общеизвестно Наверное, до такой степени я не гуглил)) Ну давай сын маминой подруги расскажи имя, ты же знаешь его. А число ПИ до 20-той запятой тоже без гугла напишешь?)) Мамкины хейтеры какие-то)) Ну такое, в общем, вкусовщина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:04 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
Ariochна языке без классов-методов (и не помню были ли там указатели на процедуры-функции изначально) "процедурных переменных" в 1974 не было были "процедурные параметры" в процедурах, но не в record'ах и потому на with не влияли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:14 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotProНаверное, до такой степени я не гуглил если тебе надо гуглить то, что все без гугла знают, то может быть тебе рановато рассуждать, кто был дебил, а кто нет? если кто-то хочет рассуждать о внешней политике России, то он должен знать фамилию Путин. БЕЗ ГУГЛА. если кто-то хочет рассуждать об истории СССР, то он должен знать фамилию Ленин. БЕЗ ГУГЛА. если кто-то хочет рассуждать о силе притяжение, то он должен знать фамилию Ньютон. БЕЗ ГУГЛА. а если простую логику ты считаешь хейтерством - то дело твоё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:17 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotProДа и пример с var ваш имеет место быть, да и правильнее. Но я, на пример, намеренно говнокодю когда: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. И позже когда сюда вернёшься, не очень удобно будет листать "милион милион алых строк", что бы убрать или заменить тот самый var. Так что мой вердикт такой, используйте всё что хотите, главное, что бы это было читабельно и понятно всем. У тебя в строке WITH 3 опасных приведения типа. ТРИ, Карл! Любое из них может оказаться ошибочным и привет. Любое из них может стать ошибочным при даже небольшом рефакторинге и ты этого не заметишь при компиляции. Плюс искусственная связность. Зачем обращаться к подкомпонентам таким образом? Для этого придуманы стандартные механизмы ООП в дельфи: свойства, события. А сверху до кучи добавлен With. Хороший пример как делать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:20 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
Dimonka, "как правило это заплатка за 5 минут" (с) если же это останется в окончательном коде - тогда да, ахтунг. кстати, даже в виде заплатки соответствует тезису 21821776 Ariochwith больше 5-6 строк размером - это поиск сюрпризов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:22 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
AriochDimonka, "как правило это заплатка за 5 минут" (с) если же это останется в окончательном коде - тогда да, ахтунг. кстати, даже в виде заплатки соответствует тезису 21821776 Ariochwith больше 5-6 строк размером - это поиск сюрпризов. Nope. Повторюсь, просто с умом использовать. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:24 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotPro Код: pascal 1. 2. 3. ты бы хоть raise для приличия вставил что ли.... RackotPro Код: pascal 1. RackotPro Код: pascal 1. Желательно вызывать один единственный раз, а не при каждом выполнении запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:28 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
Arioch, всё, я пойду вскрою вены, победил, ты царь, бог и код твой священен. Жесть xD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:30 |
|
||
|
Incompatible types
|
|||
|---|---|---|---|
|
#18+
RackotProИ позже когда сюда вернёшься, не очень удобно будет листать "милион милион алых строк", что бы убрать или заменить тот самый var. просто однажды ты переименуешь btnA во что-то другое в своей прогармме не переименуешь? даже через 3-4 года? ну так в чужой переименуешь, которую тебе передадут. и у тебя станет внезапно включаться btnA совсем другой формы. Для экспериментов на 5 минут во время отладки это подходит. Но добившись результата все же лучше переписать экспериментальную затычку в надёжный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:34 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39780528&tid=2039738]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 467ms |

| 0 / 0 |
