Size: a a a

2021 January 21

HG

Hemul GM in Delphi & Lazarus
источник

D

Darlok(Artem) in Delphi & Lazarus
zamtmn
ок. "пересоздание" ты подчеркнул желтым. подчеркни красным "создание"
Это такой тонкий троллинг? Рекорды это не классы. И никогда ими не будут. Рекорды - примитивы которые уже созданы с момента объявления переменной/элемента массива, etc.. Как и Integer, String, Double и т.д. значит и ими надо пользоваться соответствующее. Зачем создавать то что изначально уже существует?
источник

z

zamtmn in Delphi & Lazarus
Darlok(Artem)
Это такой тонкий троллинг? Рекорды это не классы. И никогда ими не будут. Рекорды - примитивы которые уже созданы с момента объявления переменной/элемента массива, etc.. Как и Integer, String, Double и т.д. значит и ими надо пользоваться соответствующее. Зачем создавать то что изначально уже существует?
я гдето говорил про классы? например чтоб сделать так:
doSomething(TDummyAdvRec.Construct(...))
источник

D

Darlok(Artem) in Delphi & Lazarus
zamtmn
я гдето говорил про классы? например чтоб сделать так:
doSomething(TDummyAdvRec.Construct(...))
var
   vRec:TDummyAdvRec;
begin
//   vRec.Create(0);
  vRec.X := 0;
  doSomething(vRec);
end;

Или вся проблема в том что нужно сделать var vRec:TDummyAdvRec;?
источник

VA

Viktor Akselrod in Delphi & Lazarus
касаемо приведенной цитаты - проблема надумана и была в старых версиях.
и уж тем более эти префиксы не улучшаю читаемость. пара букв, которые зачастую надо угадывать (только не надо рассказывать про сокращение имени типа).
если посмотришь свою ссылку чуть ниже, то там будет глава Scoped Enumerations, которая как раз таки исключает неоднозначность при совпадении имен в элементах энума.

я думаю просто никто не заморачивался с актуализацией хэлпа. эти главы не менялись как минимум со временем XE2, а то и дольше.
оба варианта имеют права на жизнь. но мы изначально говорили именно о текущем курсе и тенденциях. а их можно проследить именно в новых исходных текстах (мой скрин выше, как пример)
источник

z

zamtmn in Delphi & Lazarus
Darlok(Artem)
var
   vRec:TDummyAdvRec;
begin
//   vRec.Create(0);
  vRec.X := 0;
  doSomething(vRec);
end;

Или вся проблема в том что нужно сделать var vRec:TDummyAdvRec;?
да, зачем зачем этот сахар вводить, если его не использовать
источник

GB

George Bakhtadze in Delphi & Lazarus
Viktor Akselrod
если мы говорим о практике в стандартных исходниках делфи, то это не совсем так.
именование Init практически не используется в отличии от повсеместного Create начиная с базового TObject и выше
в тоже время вызов Create одинаково и создает экземпляр и (пере)инициализирует данные класса в зависимости от того, как он был вызван (у класса или инстанса)
хотя вариант с переинициализацией инстанса через Create лично я не использую, т.к. это не самая очевидная вещь, кмк
Эмба мало для кого авторитет. И в данном случае предлагает фигню. Действительно лучше разделять названия для конструктора, который создает и для метода, который инициализирует.
источник

GB

George Bakhtadze in Delphi & Lazarus
кстати, во времена обжектов, init требовался для случая, когда объект был в хипе. а для рекорда он зачем? тоже для этого случая?
источник

КС

Катерина Свиридова... in Delphi & Lazarus
Использовать record вместо class какая-то новая фишка? Чем лучше?
источник

BU

Boris Usievich in Delphi & Lazarus
тем что нет обязательного выделения памяти в хипе
источник

AW

Alex Wow in Delphi & Lazarus
Катерина Свиридова
Использовать record вместо class какая-то новая фишка? Чем лучше?
Деструктор
источник

КС

Катерина Свиридова... in Delphi & Lazarus
Похоже нужно почитать )
источник

AS

Alexey Shumkin in Delphi & Lazarus
Катерина Свиридова
Использовать record вместо class какая-то новая фишка? Чем лучше?
фишка как раз не новая ))))))
источник

z

zamtmn in Delphi & Lazarus
Катерина Свиридова
Использовать record вместо class какая-то новая фишка? Чем лучше?
не поверишь, когда мне хочется рекорд вместо класс я использую обжект))
источник

z

zamtmn in Delphi & Lazarus
George Bakhtadze
кстати, во времена обжектов, init требовался для случая, когда объект был в хипе. а для рекорда он зачем? тоже для этого случая?
я просто хочу попробовать advancedrecords, думал вдруг понравится. но пока неособо
источник

GB

George Bakhtadze in Delphi & Lazarus
zamtmn
я просто хочу попробовать advancedrecords, думал вдруг понравится. но пока неособо
а что именно отткда нужно?
источник

z

zamtmn in Delphi & Lazarus
George Bakhtadze
а что именно отткда нужно?
если ты имеешь ввиду "автоматические" инициализацию-финализацию и операторы, пока не пробовал, только методы. ну и ничего красивее
doSomething(TDummyAdvRec.Construct(...))
не придумалось
источник

z

zamtmn in Delphi & Lazarus
теория разбилась о суровую реальность((
источник

z

zamtmn in Delphi & Lazarus
program Project1;
{$ModeSwitch advancedrecords}

type
 TGeneralFontFileDesc=record
   Name:string;
   FontFile:string;
   constructor Init(AName:string;AFontFile:string);
   class function Construct(AName:string;AFontFile:string):TGeneralFontFileDesc;static;
 end;

constructor TGeneralFontFileDesc.init(AName:string;AFontFile:string);
begin
 Name:=AName;
 FontFile:=AFontFile;
end;

class function TGeneralFontFileDesc.Construct(AName:string;AFontFile:string):TGeneralFontFileDesc;
begin
 result.init(AName,AFontFile);
end;

begin
 writeln(TGeneralFontFileDesc.Construct('font','c:\fonts').Name);
 readln;
end.
источник

z

zamtmn in Delphi & Lazarus
ниче не выводит. в чем косяк?
источник