f 是文件类型必须写成变参形式。
Count 不是变参,是值传递,count 开辟了新的存储单元。

解决方案 »

  1.   

    :o)如果定义的过程没有var表明这个过程或函数的参数是通过值传递的。
    :o)而加上var则表明参数通过引用传递,意味着它的值并没有复制到存放例程参数的
    堆栈中(避免复制就是为了加快执行速度),而且他允许过程和函数改变参数的值。
    eg: procedure DoubleTheValue(var Value: Integer);
        begin
          Value := Value*2;
        end;
    上面是一个用了var的过程
    调用后:
      var X: integer;
      begin
        X := 10;
        DoubleTheValue(X);
        ^^^^^^^^^^^^^^^^^^调用上面的函数后,X的值就变成了20,这个过程引用了X的
                          原内存地址,所以影响了原来X的初始值……
      end;我想你应该明白了吧!!!
      

  2.   

    agree ePing.通俗说:加上VAR 就可以用这个参数返回值了。而且很多个。function getname(var id:integer;var Sname:string):boolean;
    一次就可以得到三个返回值。