我在看TStream类的时候,发现很多是看不懂的 就拿下面的方法举例吧:function TStream.Seek(Offset: Longint; Origin: Word): Longint;  procedure RaiseException;
  begin
    raise EStreamError.CreateResFmt(@sSeekNotImplemented, [Classname]);
  end;type
  TSeek64 = function (const Offset: Int64; Origin: TSeekOrigin): Int64 of object;
var
  Impl: TSeek64;
  Base: TSeek64;
  ClassTStream: TClass;
begin
{ Deflect 32 seek requests to the 64 bit seek, if 64 bit is implemented.
  No existing TStream classes should call this method, since it was originally
  abstract.  Descendent classes MUST implement at least one of either
  the 32 bit or the 64 bit version, and must not call the inherited
  default implementation. }
  Impl := Seek;
  ClassTStream := Self.ClassType;
  while (ClassTStream <> nil) and (ClassTStream <> TStream) do
    ClassTStream := ClassTStream.ClassParent;
  if ClassTStream = nil then RaiseException;
  Base := TStream(@ClassTStream).Seek;
  if TMethod(Impl).Code = TMethod(Base).Code then
    RaiseException;
  Result := Seek(Int64(Offset), TSeekOrigin(Origin));
end;
哪位大侠 能帮我一行一行的解释一下,分不多,麻烦你们了 ^.^

解决方案 »

  1.   

    function TStream.Seek(Offset: Longint; Origin: Word): Longint;
    //定义一个子过程
      procedure RaiseException;
      begin
       //触发一个异常
        raise EStreamError.CreateResFmt(@sSeekNotImplemented, [Classname]);
      end;type
      //声明函数类型
      TSeek64 = function (const Offset: Int64; Origin: TSeekOrigin): Int64 of object;
    var
      Impl: TSeek64;
      Base: TSeek64;
      ClassTStream: TClass; //定义一个类类型
    begin
    { Deflect 32 seek requests to the 64 bit seek, if 64 bit is implemented.
      No existing TStream classes should call this method, since it was originally
      abstract.  Descendent classes MUST implement at least one of either
      the 32 bit or the 64 bit version, and must not call the inherited
      default implementation. }
      Impl := Seek;//保存变量seek
      ClassTStream := Self.ClassType; //保存类类型
      //循环找到祖先类TStream
      while (ClassTStream <> nil) and (ClassTStream <> TStream) do
        ClassTStream := ClassTStream.ClassParent;
      //如果找到的ClassTStream为nil则,触发异常
      if ClassTStream = nil then RaiseException;
      //调用Seek方法
      Base := TStream(@ClassTStream).Seek;
      //判断触发的方法传入的指针是否相同,相同触发异常
      if TMethod(Impl).Code = TMethod(Base).Code then
        RaiseException;
      //调用seek过程,返回结果。
      Result := Seek(Int64(Offset), TSeekOrigin(Origin));
    end;
      

  2.   

    TSeek64 = function (const Offset: Int64; Origin: TSeekOrigin): Int64 of object; 
    Base := TStream(@ClassTStream).Seek;  看不懂  这是什么写法