Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[35.173.48.18] |
|
Страницы: (19) « Первая ... 17 18 [19] все ( Перейти к последнему сообщению ) |
Прикр. сообщ.
#1
,
|
|
|
Сообщ.
#271
,
|
|
|
Ну я тоже с дельфей максимум ~30% времени работаю. Большую часть времени C# Цитата Profi @ Для того чтобы при выходе за скоуп уничтожить объект - быть управляемым языком не обязательно. То есть, если у меня у функции в var определена ссылочная переменная, я могу не вызывать в конце функции Free для, так как компилятор все сделает сам? Нет, компилятор сам Free не вызовет. Но как я выше сказал, XmlDoc - интерфейс, так что это и надо. Но вообще есть финт ушами, который избавляет от необходимости явно вызывать Free TAutoDestroy = class(TInterfacedObject) ... public constructor Create(AObj: TObject); destructor Destroy; override; // в деструкторе вызываем AObj.Free end; procedure AutoDestroy(AObj: TObject): IUnknown; begin Result := TAutoDestroy.Create(AObj); end; begin var Obj := TStringList.Create; AutoDestroy(Obj); // работаем с Obj - вызывать Free не надо end; Только это всё лирика, к обсуждаемой теме отношения не имеет |
Сообщ.
#272
,
|
|
|
Цитата ^D^ima @ вот и спрашиваю в каких случаях это будет лучше чем просто написать переменную в var? Наверное если хочешь сломать себе голову.. И тому кто будет читать исходник потом Цитата jack128 @ Если XmlDoc вынести в блок var, то пиковое потребление памяти вырастит, потому что XmlDoc уничтожится только в конце процедуры. Т.е код ни в коем случае случае нельзя написать так? ... var XmlDoc: .... begin if ... then begin XmlDoc := LoadXmlDocument(Filename); DoWork(ParseXml(XmlDoc)); XmlDoc.Free; end; ... Эх.. теперь то с "inline variables" заживём! |
Сообщ.
#273
,
|
|
|
А скоупы, судя по всему, будут в неявный try-finally оборачиваться? Просадка по производительности однако.
|
Сообщ.
#275
,
|
|
|
Объявление переменных по ходу крайне не желательная вещь. Она реально нужна только для циклов.
Лучше бы сделали это как пункт меню для рефакторинга. Компилятор должен автоматом распознавать тип. Так что тут они перемудрили. Да и автосборку мусора. Элементарно решается двух-связным списком и особым интерфейсом у которого автоматом вызывается метод Free. Все кому надо давно бы сделали. Но нет они вместо ARC ввели слабые ссылки да ещё через корявый синтаксис вместо использование атрибута или оператора. |
Сообщ.
#276
,
|
|
|
Цитата Pavia @ Не согласен! А именно: когда пишу сложную функцию по обработке чего-то большого, то в одном месте i-целая переменная (для пробежки в массиве), в другом - плавающее число из тетрадки с записями, в третьем - вообще комплексное число. Таких случаев действительно не много, но они есть; и объявления "по-ходу" выглядят крайне полезными. Объявление переменных по ходу крайне не желательная вещь. Она реально нужна только для циклов. |
Сообщ.
#277
,
|
|
|
Цитата Pavia @ Объявление переменных по ходу крайне не желательная вещь. Наоборот. Лучше бы, конечно, сделали let-блоки с переменными, а ля ML: let var x := 1; var y := 2 in begin WriteLn(x + y); end; Цитата Pavia @ Да и автосборку мусора. Не понял фразы. В Делфи добавляют сборку мусора? Или ты хотел бы, чтобы добавили? В любом случае Цитата Pavia @ Элементарно решается двух-связным списком и особым интерфейсом у которого автоматом вызывается метод Free нет, не решается. Сборщик мусора, несмотря на название, не трогает недостижимые («мёртвые») объекты, а сохраняет достижимые («живые»), перемещая их в другую область памяти. И вообще, устройство GC несколько сложнее, чем «двусвязный список» и «особый интерфейс». Вот, рекомендую к просмотру, хоть там и Java: https://www.youtube.com/watch?v=JBaZ4lK6OBk Цитата Pavia @ Но нет они вместо ARC Так, стоп, GC и ARC — принципиально разные алгоритмы со своими плюсами и минусами (отличными друг от друга в т.ч.), и в Делфи, насколько я помню, как раз реализован ARC для интерфейсов. Т.е., достаточно унаследоваться от TInterfacedObject вместо TObject, и вот тебе объекты с ARC, для которых не нужно вызывать Free вручную. jack128 же написал об этом выше. Или я тебя не понял. |
Сообщ.
#279
,
|
|
|
Krid, там триал с ограничением по времени? Или порезанная демо-версия?
|
Сообщ.
#282
,
|
|
|
Здравствуйте!
Embarcadero RAD Studio 10.3 Rio Update 1 (ISO 6,4 ГБ) ссылка наверху кто -то скачал, использовал, впечатление особенно по мобильным устройствам. p.s. всё таки уточню ссылка на демку на 30 дней или некий продукт для "постоянного общения"? |
Сообщ.
#283
,
|
|
|
Давно уже 11-ая Studio есть.
|