1.
function
A: TList;
begin
Result
:= nil;
end;
function
B: Integer;
begin
Result
:= A.Count;
end;
var
X
: Integer;
begin
X
:= B;
end;
Вопрос
- чему равно X?
2.
В чем ошибочен код:
Function
A: TList;
Begin
Reslt
:= TList.Create;
End;
Function
GetPersons(aList: TList);
Begin
aList.Add(TPerson.Create(‘Иванов’));
aList.Add(TPerson.Create(‘Петров’));
End;
Var
l_List
: TList;
Begin
l_List
:= A;
GetPersons(L);
End.
3.
Дан интерфейс X, как реализовать его на
классе - потомке от Y?
В
качестве Y использовать - TObject,
TComponent и TinterfacedObject.
Условие:
Нужно, чтобы число ссылок управляло
временем жизни реализующего объекта.
4.
Что вы знаете про шаблоны publisher/subscriber
и strategy?
На
какой механизм Delphi
они похожи?.
5.
Что
такое
implements?
Дайте
пример поведения счетчика ссылок с
implements
и без него.
1. думаю либо -1 либо хз
ОтветитьУдалить2. Ну дело ведь в названии переменной :)
(хотя это по сути и не переменная вовсе, поправьте плз если неправ)
Function A: TList;
Begin
Reslt := TList.Create;
End;
Ну а если серьезно то ...
что такое L ?
Var
l_List : TList;
Begin
l_List := A;
GetPersons(L); // Здесь наверно должен быть
//GetPersons(l_List);
End.
Ну и по итогу надо FreeAndNil(l_List);
хотя буду на работе проверю :) вы меня заинтриговали.
Ещё думаю что проблема может быть в функции А.
остальные к сожалению хз. :(
"думаю либо -1 либо хз "
ОтветитьУдалитьВы издеваетесь?
AV там будет на Result := A.Count;
УдалитьПо второму - действительно, L откуда взялось? Ну и "согласен с предыдущим оратором" - надо Free для списка, а перед этим для каждого TPerson в списке.
Implements - ключевое слово, применяется к property для того, чтобы делегировать тому, кто в этом property "сидит", реализацию какого-то интерфейса. Вот что в вопросе со счетчиком ссылок имелось ввиду - не понял, но я бы ответил про разницу TInterfacedObject / TContainedObject и про то, что классу, который будет использоваться с implements не нужен подсчет ссылок, поскольку время жизни его экземпляров равно времени жизни объекта, который его агрегирует.
Да - AV.
УдалитьL - опечатка. Да! - не хватает FreeAndNil.
про Implements - ОТДЕЛЬНО напишу. Там есть вероятность словить AV.
"что такое L ?"
ОтветитьУдалить-- это "хорошо"
"Ну и по итогу надо FreeAndNil(l_List);"
ОтветитьУдалитьЯ "не помню"... Но идея была как раз в этом. Причём - не ОДИН Free.
"остальные к сожалению хз. :("
ОтветитьУдалитьдаже implements?