function Read(var Buffer; Count: Longint): Longint; virtual; abstract; (注: TStream 类的方法)像这样的一个文法中的 var Buffer; 这个东西是Delphi 中的语法?这种没看到有介绍?在这里我的理解: 表示一个缓存。但为什么这么写,请高手指点。

解决方案 »

  1.   

    是,声明为var类型,传递地址,并可以被改写
      

  2.   

    var  用来定义变量时或在方法中传地址。
    function TestFunc(var sStr: string): string;
    var  
      aStr: string;
    beginend;
    但这里并没有 数据类型,这点搞不明。
    function Read(var Buffer; Count: Longint): Longint; virtual; abstract; (注: TStream 类的方法)还是不明白,请1楼高手指点。 有没有 介绍这种用法的文档?
      

  3.   

    var 表示可以修改
    后面没有加类型 表示 可以是 字符串  可以是数组  可以是流
      

  4.   

    翻译成C的声明就是void* buffer我好像有相关的资料,但是不知道是在哪里,这种叫无类型变量,Delphi的帮助中应该有,但是全是英文的。这些都是基础的东西,目前网上或书上的东西都是拖拉控件的书,应该不好找。
      

  5.   

    无类型参数
     声明var、const和out参数时,可以忽略类型说明。(值参数必需指定类型。)例如,procedure TakeAnything(const C);这里声明了一个叫做TakeAnything的过程,它接受一个任意类型的参数。调用这样的例程时,不能向其传递数字或无类型的数字常量。在过程或函数主体中,无类型参数与任何类型都是不相容的。要操作一个无类型参数,必需对其进行类型转换。通常,编译器不会检查对无类型参数的操作是否有效。下面的例子在函数Equal中使用的了无类型参数,该函数根据指定的字节数比较任意两个变量。function Equal(var Source, Dest; Size: Integer): Boolean;type  TBytes = array[0..MaxInt - 1] of Byte;var  N: Integer;begin  N := 0;  while (N < Size) and (TBytes(Dest)[N] = TBytes(Source)[N]) do    Inc(N);  Equal := N = Size;end;给出如下声明:type  TVector = array[1..10] of Integer;  TPoint = record    X, Y: Integer;  end;var  Vec1, Vec2: TVector;  N: Integer;  P: TPoint;可以完成如下对Equal函数的调用:Equal(Vec1, Vec2, SizeOf(TVector))           //比较Vec1和Vec2Equal(Vec1, Vec2, SizeOf(Integer) * N)       //比较Vec1和Vec2的前N个元素Equal(Vec1[1], Vec1[6], SizeOf(Integer) * 5) //比较Vec1的前5个元素和后5个元素Equal(Vec1[1], P, 4)                         //比较Vec1[1]和P.X以及Vec1[2]和P.Y
      

  6.   

    你在网上搜Object Pascal Reference.chm,上面我就是从里面摘出来的
      

  7.   

    TO littlestone08谢谢解答。。给分