powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / H2593 Code has no effect. Compiler generated temporary variable is cleared instead
22 сообщений из 22, страница 1 из 1
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463152
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delhi 10.2, компиляция под Android, код:
Код: pascal
1.
2.
3.
4.
5.
6.
var
  List: TList<TSomeClass>;
begin
  List := TList<TSomeClass>.Create;
  List.Add(TSomeClass.Create);
  List[0].Free; // H2593 Code has no effect. Compiler generated temporary variable is cleared instead



Вопрос: какого фига?
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463157
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mikeВопрос: какого фига?Ну а смысл, что-то добавлять в список, чтобы тут же его удалить?
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463158
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mikeкакого фига?
В некстгене объекты управляемые. Само помрет в прологе.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463160
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey...прологе
эпилоге конечно :)
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463165
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_misha mikeВопрос: какого фига?Ну а смысл, что-то добавлять в список, чтобы тут же его удалить?

Объект удаляется, но элемент списка остается.

Kazantsev Alexeymisha mikeкакого фига?
В некстгене объекты управляемые. Само помрет в прологе.
Ох нифигасе.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463168
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Ну а смысл, что-то добавлять в список, чтобы тут же его удалить?
Это вырожденный пример, оно при любом List[x].Free так ругается.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463170
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyВ некстгене объекты управляемые. Само помрет в прологе.
Это конечно зашибись, но, блин, может у меня в TSomeClass десять гигабайт памяти выделено было. И теперь вместо прогнозируемого высвобождения мне ждать пока оно само просрется?
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463173
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mikeтеперь вместо прогнозируемого высвобождения мне ждать пока оно само просрется?
Код: pascal
1.
SomeObject := nil;
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463175
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mikeИ теперь вместо прогнозируемого высвобождения мне ждать пока оно само просрется?
Можешь просто доку почитать .
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463177
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Код: pascal
1.
SomeObject := nil;


Если компилятор сгенерировал временную переменную это не поможет.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463181
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyМожешь просто доку почитать .
А что им помешало вызывать DisposeOf когда я делаю Free?
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463198
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mike, http://www.gunsmoker.ru/2013/05/modern-delphi.html

GunSmokerТак что, если вы хотите написать универсальный код, который можно запускать на обоих компиляторах (с ARC и классический, без него), то вы можете:
...
Использовать классический подход с Free/FreeAndNil, не используя преимущества ARC. На ARC этот подход формально будет работать благодаря обратной совместимости, хотя его поведение может незначительно отличаться.


Предупреждение нужно лишь для того, чтобы убедиться, что ты понимаешь, что ты делаешь.

misha mikeА что им помешало вызывать DisposeOf когда я делаю Free?
GunSmokerМетод DisposeOf безусловно вызывает деструктор - даже несмотря на существующие ссылки на объект. После такого вызова деструктора объект переходит в состояние "зомби" ("zombie state" или "disposed state") - для него был вызван деструктор, объект был очищен, но память для него ещё не была освобождена. Вы можете узнать состояние объекта через свойство Disposed - это аналог Assigned для объектов из классического компилятора.

Разница между вызовами FreeAndNil/Free и DisposeOf заключается в ваших намерениях: вызов FreeAndNil/Free отсоединяет ссылку, но не означает немедленного удаления объекта (он может быть удалён сейчас, но может быть удалён и позднее), а вызов DisposeOf всегда безусловно удаляет объект, даже если на него есть ссылки.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463247
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker, хорошо, я не делаю Free, а сразу удаляю его из TList<T>, в этом случае объект будет удален немедленно, или когда-нибудь потом?
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463261
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mike, сразу - поскольку счётчик ссылок опустится до 0. В предположении, что этот же объект не используется ещё где-то вне списка.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463264
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker, благодарю.

P.S. Это ж надо было вернуться в Delphi-разработку и найти тут такое... Управляемые объекты по-умолчанию, слабые ссылки, строки с нулевой базой. А на что еще не наткнулся, страшно подумать.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463272
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mikeи найти тут такое...
Так это только для некстгена, в классическом компиляторе всё по прежнему.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463286
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyТак это только для некстгена, в классическом компиляторе всё по прежнему.
Но нужен-то некстген...

Вакханалия со строками вообще на голову не налазит. Индексируем по-умолчанию с нуля, но если хотим, то можно и с единицы. Но строковые функции всегда работают с единичной базой. Но хелперы всегда с нулевой.

Для кого это все? Кем нужно быть, чтобы держать в голове столько неочевидных особенностей. По дорожке PHP пошли абракадабровцы.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463293
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mike, предполагается, что старики будут использовать индексацию с единицы, молодёжь - с нуля.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463299
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mikeДля кого это все?
Метаний там вообще в достатке. Сперва строки в некстгене сделали иммутабельными, но менять строку не запретили (т.е. s[5] := 'A' к ошибке компиляции не приводило, но в рантайме строка полностью пересоздавалась). Байтовые строки выкинули совсем. Теперь, вот, и байтовые строки вернули, и линуксовом некстгене строки перестали быть иммутабельными. Д - движуха.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463306
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmokerмолодёжь - с нуля.
Ну не знаю. Тут с молодежью и так швах, а с подобными закидонами желающих станет еще меньше.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463313
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо Марко Канту поймать в темном переулке и заставить сделать строки стартующими с 1 всегда и везде.
...
Рейтинг: 0 / 0
H2593 Code has no effect. Compiler generated temporary variable is cleared instead
    #39463314
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и иммутабельность с ARC - в топку.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / H2593 Code has no effect. Compiler generated temporary variable is cleared instead
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]