Size: a a a

2020 March 10

DB

Dmitry Belkevich in Delphi & Lazarus
лучше mvc оставить на потом, да )
источник

a

aford in Delphi & Lazarus
Viktor Akselrod
для разделения логики и отображения используются шаблоны проектирования MVVM, MVC и прочие
но для этого должна быть твердая база по делфи
Давно читал, интересный подход: https://m.habr.com/ru/post/147133/
источник

GB

George Bakhtadze in Delphi & Lazarus
Вопрос на засыпку - что выведет данный код:
program genTest;
{$IFDEF FPC}{$mode Delphi}{$ENDIF}
{$APPTYPE CONSOLE}

type
 TTest1 = class
   procedure Test();
 end;

 TTest2 = class(TTest1)
   procedure Test();
 end;
 
 TTest<T: TTest1, constructor> = class(TObject)
   FTest: T;
   procedure TestIt();
 end;

procedure TTest1.Test();
begin
 WriteLn('1');
end;

procedure TTest2.Test();
begin
 WriteLn('2');
end;

procedure TTest<T>.TestIt();
begin
 FTest := T.Create();
 T(FTest).Test();
 readln;
end;

begin
 with TTest<TTest2>.Create do
   TestIt();
end.
источник

VA

Viktor Akselrod in Delphi & Lazarus
George Bakhtadze
Вопрос на засыпку - что выведет данный код:
program genTest;
{$IFDEF FPC}{$mode Delphi}{$ENDIF}
{$APPTYPE CONSOLE}

type
 TTest1 = class
   procedure Test();
 end;

 TTest2 = class(TTest1)
   procedure Test();
 end;
 
 TTest<T: TTest1, constructor> = class(TObject)
   FTest: T;
   procedure TestIt();
 end;

procedure TTest1.Test();
begin
 WriteLn('1');
end;

procedure TTest2.Test();
begin
 WriteLn('2');
end;

procedure TTest<T>.TestIt();
begin
 FTest := T.Create();
 T(FTest).Test();
 readln;
end;

begin
 with TTest<TTest2>.Create do
   TestIt();
end.
вопроса бы не было, если бы он вывел ожидаемое 2, верно?
источник

GB

George Bakhtadze in Delphi & Lazarus
Viktor Akselrod
вопроса бы не было, если бы он вывел ожидаемое 2, верно?
ты таки ожидаешь 2?
источник

VA

Viktor Akselrod in Delphi & Lazarus
George Bakhtadze
ты таки ожидаешь 2?
да, конечно
источник

GB

George Bakhtadze in Delphi & Lazarus
Viktor Akselrod
да, конечно
ну 2 и выводит. FPC. но не D10.3
источник

VA

Viktor Akselrod in Delphi & Lazarus
George Bakhtadze
ну 2 и выводит. FPC. но не D10.3
интересно
источник

AK

Alexey Kulakov in Delphi & Lazarus
да не
источник

AK

Alexey Kulakov in Delphi & Lazarus
TTest<T: TTest1, - видимо, загвоздка в этом?
источник

VA

Viktor Akselrod in Delphi & Lazarus
George Bakhtadze
ну 2 и выводит. FPC. но не D10.3
конструктор правильный вызывается, а с кастингом налажали
источник

GB

George Bakhtadze in Delphi & Lazarus
может баг в конкретной версии компилятора? у меня обновлений не стоит
источник

VA

Viktor Akselrod in Delphi & Lazarus
George Bakhtadze
может баг в конкретной версии компилятора? у меня обновлений не стоит
10.3.3 - баг
источник

AK

Alexey Kulakov in Delphi & Lazarus
завиртуалить если Test() всё ок будет?
источник

GB

George Bakhtadze in Delphi & Lazarus
Alexey Kulakov
завиртуалить если Test() всё ок будет?
да, только смысл в женериках пропадает
источник

VA

Viktor Akselrod in Delphi & Lazarus
Alexey Kulakov
завиртуалить если Test() всё ок будет?
это уже другая тема абсолютно
источник

GB

George Bakhtadze in Delphi & Lazarus
Alexey Kulakov
завиртуалить если Test() всё ок будет?
FPC этот Test() заинлайнить даже может. D10 не может, но это можно пережить, но это...
источник

AK

Alexey Kulakov in Delphi & Lazarus
:) вот почему приходится проверять код на разных компиляторах, читать документацию на разных языках и не доверять теории без тестов :(
источник

VA

Viktor Akselrod in Delphi & Lazarus
George Bakhtadze
FPC этот Test() заинлайнить даже может. D10 не может, но это можно пережить, но это...
заведешь баг в QC?
источник

GB

George Bakhtadze in Delphi & Lazarus
Viktor Akselrod
заведешь баг в QC?
думаешь, есть смысл? женерикам больше 10 лет. если они так работают, значит должно работать только что-то типа TList<T>, TArray<T>. остальное и не должно
источник