On 14/05/2010 15:52, Mattias Gaertner wrote:
"var" means, you can do this:

type
   TQStrings = class(TStrings)
   end;

procedure A(var s: TStrings);
begin
   s:=TQStrings.Create;
end;

Then your TStringList will no longer be a TStringList. That's why 'var'
must match exactly.
Same for out.
Const and no modifier allows to pass descendants.

yes, true, then if we follow that consequently:


procedure Foo(out s: TStrings);
begin
end;

var x: TObject;
foo(x);

should work? (or well only if it is made sure, that out really means out, so the procedure is not allowed to use the value that was passed in)

"s" can be assigned a TStrings (or descendant of) => which should be fine, since it can be stored in x too.

Martin
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to