我在看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;
哪位大侠 能帮我一行一行的解释一下,分不多,麻烦你们了 ^.^
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;
哪位大侠 能帮我一行一行的解释一下,分不多,麻烦你们了 ^.^
解决方案 »
- format字符串格式问题?
- 如何栏截网页的提交事件?顶者有分
- 初学者的一个小问题
- s:=tstrings.Create; SetStrProp(s,'text', 'the text'); 这样为什么不可以???????????????
- 求助,请教各位大哥怎么把 服务器里的数据库都选择出来,谢谢!
- DELPHI6中有ping控件吗?
- WebSnap 之永恒的对勾!!!???
- delphi汇编问题 谁能帮我看看这是什么意思啊?
- RichViewEdit有谁用过吗?同时发广告购买痕迹保留控件,要求源码,看完善程度报价.
- 颓废!这段时间真颓废,不想学东西,也不想做东西,每天就在网上瞎混,怎么办?
- 电脑显示来电
- 怎样写查询语句,检索数据库中有没有包含一组条件的记录?
//定义一个子过程
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;
Base := TStream(@ClassTStream).Seek; 看不懂 这是什么写法