|
|
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
Нашёл тут в одном стороннем исходнике коде такую конструкцию: Код: pascal 1. Вопрос: кто-нибудь знает где можно почитать про сабж? CTRL-Click по ней отправляет в начало System, т.е. это макрос. В справке я её не нашёл. Гугл отправляет читать про default свойства объектов. Копаться в ассемблерном коде очень не очень. Что она делает вроде понятно, но хотелось бы посмотреть на документацию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2019, 16:49 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
Возвращает значение по умолчанию для типа. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2019, 17:15 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
X-Cite Возвращает значение по умолчанию для типа. Какое значение считается значением по-умолчанию для TValue? Для Variant? Для string и PChar? И т.п. 0 / nil / NULL / '' для всех? Всегда ли её можно использовать вместо FillChar(SomeRec, SizeOf(SomeRec), 0) ? Есть ли какие-нибудь подводные камни или особенности её использования? Почему её почти никто не использует, ведь это явно удобнее и читабельнее, чем FillRect? И т.п. и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2019, 17:20 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
alekcvp 0 / nil / NULL / '' для всех? alekcvp Всегда ли её можно использовать вместо FillChar(SomeRec, SizeOf(SomeRec), 0) ? Код: pascal 1. 2. 3. 4. 5. С FillChar по такой записи будет утечка alekcvp Почему её почти никто не использует, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2019, 17:27 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
Я всегда использую, когда нужно значение по умолчанию... TValue - это record, значит поведение по умолчанию как для любых записей. Я думаю может это вам поможет? https://stackoverflow.com/questions/14176198/difference-between-initialize-default-and-fillchar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2019, 17:30 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
X-Cite Я всегда использую, когда нужно значение по умолчанию... TValue - это record, значит поведение по умолчанию как для любых записей. Я думаю может это вам поможет? https://stackoverflow.com/questions/14176198/difference-between-initialize-default-and-fillchar Спасибо за ссылку. Странно что в официальной справке её нет (или фиг найдёшь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2019, 17:34 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
alekcvp Странно что в официальной справке её нет (или фиг найдёшь). Официальная справка вообще годится только в помойку. Ещё несколько лет назад я, когда ставил дельфу, подключал к ней хелп от D6, в нём было куда больше полезной информации. Сейчас уже ленюсь и вообще не пользуюсь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2019, 17:42 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
Если поэкспериментировать и посмотреть итоговый асм, Default во многих случаях быстрее FillChar за счет того, что на небольших типах вставляются непосредственно инструкции mov вместо вызова функции. Я эту штуку обожаю и почти везде у себя применяю. Она еще и намного безопаснее за счет контроля типа. Почему она мало распространена? Привычка олдфагов, отсутствие справки. По мне, одна из топ-5 самых полезных удобняшек в Дельфях после 7ки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 11:53 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
Василий 2 По мне, одна из топ-5 самых полезных удобняшек в Дельфях после 7ки. Огласите весь список, пожалуйста (С) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 13:05 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
alekcvp Василий 2 По мне, одна из топ-5 самых полезных удобняшек в Дельфях после 7ки. Огласите весь список, пожалуйста (С) Что ж, я знал, что этот вопрос последует...)) Без сортировки по значимости - Exit(value) - Default - inline - методы и прочие class-фичи у записей - for in ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 13:30 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
Тогда надо было сразу говорить, что "удобняшек в языке Дельфи". И где генерики, анонимные методы и пр. радости жизни ? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 13:37 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам Тогда надо было сразу говорить, что "удобняшек в языке Дельфи". И где генерики, анонимные методы и пр. радости жизни ? Еще Юникод вспомни) Это не удобняшки, а серьезные фичи. Вот кстати еще одна неочевидная ситуация, когда Default помогает избежать бага Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 14:06 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
Василий 2 Без сортировки по значимости - Exit(value) - Default - inline - методы и прочие class-фичи у записей - for in Василий 2 Вот кстати еще одна неочевидная ситуация, когда Default помогает избежать бага Код: pascal 1. 2. Потому что, по-факту, компилятор этот вызов преобразует в Код: pascal 1. 2. Такая же хрень со строками и прочими ссылочными типами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 14:22 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
alekcvp Такая же хрень со строками и прочими ссылочными типами. Угу, но остальные типы не затираешь FillChar-ом, поэтому на утечку памяти и нет шанса наткнуться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 14:51 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ alekcvp 0 / nil / NULL / '' для всех? alekcvp Всегда ли её можно использовать вместо FillChar(SomeRec, SizeOf(SomeRec), 0) ? Код: pascal 1. 2. 3. 4. 5. С FillChar по такой записи будет утечка alekcvp Почему её почти никто не использует, А для чего использоватьFillChar для структуры, содержащей string и прочие указатели ? Как-бы очевидно, что будет утечка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 19:52 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
а в чем практический смысл этой процедуры? Разве при объявлении рекордов они не инициализируются? Даже в микроконтроллерах объявляемые переменные чистятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 22:02 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, локальные не чистятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 23:34 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, да и result, как выше писали, не всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2019, 23:34 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
defecator А для чего использоватьFillChar для структуры, содержащей string и прочие указатели ? Как-бы очевидно, что будет утечка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 00:19 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
makhaon, ну как бы не новость - языку не один десяток лет - радость-то в чем? Тут FMX до путя довести не могут много лет - реальный объем работы. И тут в топе - цикл for in, exit(), классовые функции........ И в чем академическая ценность?? Сэкономил 4 строчки кода? Да, еще забыл один из топов - инлайн функции - ну прям задышалось легче.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 01:11 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
defecator А для чего использоватьFillChar для структуры, содержащей string и прочие указатели ? Как-бы очевидно, что будет утечка Потому что для локальной переменной компилятор инициализирует строки пустым значением, а вот простые поля не инициализирует, поэтому при первом обращении к локальной переменной можно использовать FillChar();, кроме случая с Result. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 10:08 |
|
||
|
Процедура Default();
|
|||
|---|---|---|---|
|
#18+
defecator А для чего использоватьFillChar для структуры, содержащей string и прочие указатели ? Для зануления остальных полей GrigoriyFomin И тут в топе - цикл for in, exit(), классовые функции........ И в чем академическая ценность?? Сэкономил 4 строчки кода? Да, еще забыл один из топов - инлайн функции - ну прям задышалось легче.... Для тех, кто не умеет читать - прямым текстом: топ удобных мелочей , без которых можно обойтись, но которые делают процесс немного приятнее. Ну а то, что ты не в состоянии оценить инлайн функции, это твои личные трудности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 10:29 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39898356&tid=2038799]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 453ms |

| 0 / 0 |
