|
|
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
zedxxx, Да я верю. Не случилось в 10.3, случится в 10.4 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 11:20 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Ты сейчас договоришься до того, что используемый инструмент нужно знать и уметь. Офигеть же требования, правда? Ой, ну вот давай не утрировать. Как будто очень весело на каждой строчке кода прыгать к объявлениям или ждать хинтов, чтобы выяснить, где какой тип. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 14:16 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Василий 2 Как будто очень весело на каждой строчке кода прыгать к объявлениям или ждать хинтов, чтобы выяснить, где какой тип. Вопрос в том, насколько часто ты не знаешь, где и какой тип. А также в том, для чего тебе это знать. У ТС путаница произошла не от незнания, а от того, что вместо вызова метода предназначенного для освобождения объекта, он пользуется костылём FreeAndNil. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 14:34 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
zedxxx В новой версии Delphi нас ждут Managed Records с конструкторами, конструкторами копирования и деструкторами (которые будут вызываться автоматически), так что будет ещё веселее: https://blog.marcocantu.com/blog/2018-november-custom-managed-records-delphi.html Код: pascal 1. 2. 3. 4. 5. 6. 7. Можно ожидать появления библиотек с упрощенным автоматическим управлением памятью. Вышел из scope -> зовется деструктор. Без старого фокуса с кривыми дельфийскими интерфейсами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 15:15 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Вопрос в том, насколько часто ты не знаешь, где и какой тип. А также в том, для чего тебе это знать. У ТС путаница произошла не от незнания, а от того, что вместо вызова метода предназначенного для освобождения объекта, он пользуется костылём FreeAndNil. В своем коде - знаю. В чужом - да как повезет. Для чего знать? А чтобы понимать, как его вообще применять. А вот насчет FreeAndNil это ты очень зря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 16:47 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
FreeAndNil для массива - это дурдом. У меня по опыту даже Finalise(arr) иногда проблемы вызывал. А вот Setlength(arr,0) работает надежно и предсказуемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 17:01 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Василий 2 А чтобы понимать, как его вообще применять. Чтобы понимать, как применять - читаешь доку, смотришь декларацию... и всё сразу видно. Никакой путаницы. Василий 2 А вот насчет FreeAndNil это ты очень зря. FreeAndNil не просто костыль, а опасный костыль. Что данный топик неиллюзорно символизирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 17:11 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
rgreat А вот Setlength(arr,0) работает надежно и предсказуемо. Ещё можно писать: Код: pascal 1. но ни это, ни SetLength особого смысла не несут, т.к. массив и так будет автоматически уничтожен при выходе из области видимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 17:16 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
zedxxx, Понятное дело. Да и Setlengh нужен только в момент обнуления перед повторным использованием массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 17:17 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
rgreat У меня по опыту даже Finalise(arr) иногда проблемы вызывал. Кровавые подробности? Так-то Finalize и SetLength(..., 0) сводятся к вызову одних и тех же процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 17:18 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Кровавые подробности? При смене на SetLength(x,0) проблема прошла. Код был не мой, и разбираться было в лом. Дело было минимум лет 10 назад. С тех пор Finalize я не пользую принципиально. Хотя и раньше не понимал его смысла в применении к массиву. Так-то Finalize и SetLength(..., 0) сводятся к вызову одних и тех же процедур.А вот как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 17:20 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Если верить интернету , динамические массивы введены в обджект паскаль, чтобы народ не мучился с выделением памяти. Так нет, теперь им еще конструкторы/деструкторы подавай :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2020, 17:52 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
zedxxx но ни это, ни SetLength особого смысла не несут, т.к. массив и так будет автоматически уничтожен при выходе из области видимости. Ага, если вы объявляете в локальных переменных какой-нибудь управляемый тип, вроде string или array of ... , то это автоматически добавляет неявный try - finally. Это надо иметь в виду, когда пишите функции, которые планируете вызывать много раз в цикле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2020, 09:26 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey FreeAndNil не просто костыль, а опасный костыль. Что данный топик неиллюзорно символизирует. Что тут еще сказать... разве что вспомнить пословицу "Сдуру можно и х.. сломать" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2020, 09:52 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey FreeAndNil не просто костыль, а опасный костыль. Что данный топик неиллюзорно символизирует. Ну да - "убивает пуля, а не человек". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2020, 09:56 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
alekcvp если вы объявляете в локальных переменных какой-нибудь управляемый тип, вроде string или array of ... , то это автоматически добавляет неявный try - finally. Это надо иметь в виду, когда пишите функции, которые планируете вызывать много раз в цикле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2020, 10:00 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
wadman Ну да - "убивает пуля, а не человек". Зри в корень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2020, 10:24 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey FreeAndNil не просто костыль, а опасный костыль. Что данный топик неиллюзорно символизирует. http://docwiki.embarcadero.com/Libraries/Rio/en/System.SysUtils.FreeAndNil То, что FreeAndNil не ругается и позволяет использовать в качестве аргумента ссылку на массив записей (TArray<rVariables>), говорит о том, что среда считает её object reference. Наверное, это не совсем правильно, что среда позволяет такое писать: Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2020, 10:47 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
goldmi45, Какой, блин, обжект референс, когда там параметр нетипизированный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2020, 11:18 |
|
||
|
Удаление TArray вызывает ошибку, почему?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Да, параметр нетипизирован. Но в процедуре тупо приводится к объекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2020, 11:31 |
|
||
|
|

start [/forum/topic.php?fid=58&startmsg=39938152&tid=2038476]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 362ms |

| 0 / 0 |
