Size: a a a

2020 October 15

DB

Dmitry Belkevich in Delphi & Lazarus
 TUniPoolRecQuery = record
strict private
  FDBQuery: TUniQuery;
public
  class operator Initialize(out ADest: TUniPoolRecQuery);
  class operator Finalize(var ADest: TUniPoolRecQuery);
  property DBQuery: TUniQuery read FDBQuery write FDBQuery;
end;

{ TUniPoolRecQuery }

class operator TUniPoolRecQuery.Finalize(var ADest: TUniPoolRecQuery);
begin
DBPool.FreeQuery(ADest.FDBQuery)
end;

class operator TUniPoolRecQuery.Initialize(out ADest: TUniPoolRecQuery);
begin
ADest.FDBQuery := DBPool.GetQuery;
end;

юзать так:

var PoolRec: TUniPoolRecQuery;
PoolRec.DBQuery...

try/finally не нужен. при заходе в зону видимости запись инициализируется, при выходе - финализируется, проверил. один раз и то  и то
источник

AK

Alexey Kulakov in Delphi & Lazarus
В лазаре была уже до дельфы, что-то не было заметно особых восторженных плясок, скорее, сдержанное удовлетворение
источник

DB

Dmitry Belkevich in Delphi & Lazarus
ну, не прям уж мега-фича, но местами удобно
источник

DB

Dmitry Belkevich in Delphi & Lazarus
меньше ненужного кода
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Enter/Leave в CS туда же... возможно и еще какая-то явная польза будет
источник

G

Garik in Delphi & Lazarus
при необработанном исключении финализатор сработает?
источник

Ш

Шляпник in Delphi & Lazarus
Dmitry Belkevich
заюзал новую фичу в 10.4 - инициализацию и финализацию записей.
отлично ложится на код вместо try/finally в нужных местах.
демо-пример:

https://code-kungfu.com/delphi-code/6-delphi-managed-records-making-your-code-smart.html
procedure LoadSettings;
begin
 var LApp: TAppSettings;
 CheckBox1.Checked := LApp.AppConf.ReadBool('Settings', 'FirstStart', True);
end;

procedure SaveSettings;
begin
 var LApp: TAppSettings;
 LApp.AppConf.WriteBool('Settings','FirstStart', CheckBox1.Checked);
end;

а что Делфи уже понимает объявление переменных по месту? :)
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Garik
при необработанном исключении финализатор сработает?
По идее должен. Записи же локальные разрушаются всегда, финализатор должен сработать
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Шляпник
procedure LoadSettings;
begin
 var LApp: TAppSettings;
 CheckBox1.Checked := LApp.AppConf.ReadBool('Settings', 'FirstStart', True);
end;

procedure SaveSettings;
begin
 var LApp: TAppSettings;
 LApp.AppConf.WriteBool('Settings','FirstStart', CheckBox1.Checked);
end;

а что Делфи уже понимает объявление переменных по месту? :)
Ато )
источник

Ш

Шляпник in Delphi & Lazarus
не расстраивай меня :( не уж то последний оплот уюта и порядка пал? Когда произошло сие трагическое событие, в какой версии? (хнык)
источник

AS

Alexey Shumkin in Delphi & Lazarus
Шляпник
не расстраивай меня :( не уж то последний оплот уюта и порядка пал? Когда произошло сие трагическое событие, в какой версии? (хнык)
Ты где был?
источник

Ш

Шляпник in Delphi & Lazarus
Alexey Shumkin
Ты где был?
на другом языке кодил, а до того на старой версии сидел, так что выпал из потока версий
источник

АВ

Александр В... in Delphi & Lazarus
О. Боже мой. Скоро попадешь на проект с таким объявлением переменных в портянках и мозг сломаешь в этом ковыряться😂 какой-то голанг получается😄😄
источник

RS

Renat Suleymanov in Delphi & Lazarus
Шляпник
не расстраивай меня :( не уж то последний оплот уюта и порядка пал? Когда произошло сие трагическое событие, в какой версии? (хнык)
FPC держится
источник

Ш

Шляпник in Delphi & Lazarus
Александр В
О. Боже мой. Скоро попадешь на проект с таким объявлением переменных в портянках и мозг сломаешь в этом ковыряться😂 какой-то голанг получается😄😄
вот потому и плакаю, мне портянок ВБА хватило за глаза с их объявлениями переменных в самых неожиданных местах
источник

АВ

Александр В... in Delphi & Lazarus
Шляпник
вот потому и плакаю, мне портянок ВБА хватило за глаза с их объявлениями переменных в самых неожиданных местах
Ох уж этот легаси на чистом C😄 Как вспомню так вздрогну😄
источник

AK

Alexey Kulakov in Delphi & Lazarus
Александр В
Ох уж этот легаси на чистом C😄 Как вспомню так вздрогну😄
источник

АВ

Александр В... in Delphi & Lazarus
😁
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Фича крайне сомнительная. Но сделали. Локальные переменные
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Плохо ещё то, что переменную можно произвольно переназначать прямо по ходу. Будет каша со временем, к бабке не ходи
источник