[fpc-devel] Parameters must match exactly?
    Mattias Gaertner 
    nc-gaertnma at netcologne.de
       
    Fri May 14 16:52:24 CEST 2010
    
    
  
On Fri, 14 May 2010 16:45:50 +0200
Graeme Geldenhuys <graemeg.lists at gmail.com> wrote:
>[...]
> 
> I got similar issues with TStrings and TStringList. TStringList is a
> descendant of TStrings, but I can't pass a TStringList type as a parameter
> to a method declared with TStrings.
> 
> 
> Maybe I don't understand the var parameter correctly (but haven't tested to
> see what happens if I remove var from parameter list). If I have a class
> instance, when should I pass it to a method or function/procedure as var
> and when don't I need to use var parameters?
"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.
Mattias
    
    
More information about the fpc-devel
mailing list