为什么我的tfilestream型的size读不出来??????(50分)

  • 主题发起人 主题发起人 budianermayi
  • 开始时间 开始时间
B

budianermayi

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序如下:
try
readstream:=tfilestream.Create(addressstr,fmopenread);
readstream.Seek(0,0);
num:=(readstream.Size div sizeof(totalrecord));
except
......
end;
可是我在跟踪时发现,我的readstream.size的值总是为0,为什么?
我的readstream初始化好像没有问题,也没有出错什么的,为什么???
请delphi大侠们多多帮助!!!!!!!◎!!!!
 
跟踪的时候的确总是0,但是如果你用ShowMessage
方式,就可以看到真实的了,不知道为什么。
不光这个,用Seek后,显示Position也是这样。
 
to Dreamtiger:
我试了,没错,是像你说得那样,在showmessage()里头可以显示出来,可是我怎么用这个
size值啊???
 
showmessage()里头可以显示出来------->可以正常工作
用就是了
 
原因主要出在int64类型.
只要符合如下模版,那么调试的时候XXX一定显示为零。
property XXX:int64 read getXXX;

////////////////////////////
给你个例子看看
type
TMyObj1=class
private
FNum:Int64;
procedure setNum(const Value: Int64);
function getNum: Int64;
public
property Num:Int64 read getNum write setNum;
constructor create;
end;

TMyObj2=class
private
function GetSize: int64;
procedure SetSize64(const Value: int64);
public
property Size: int64 read GetSize write SetSize64;
end;
implementation

{ TMyObj1 }

function TMyObj2.GetSize: int64;
var
i:int64;
begin
i:=6;
Result := i
end;

procedure TMyObj2.SetSize64(const Value: int64);
begin
//
end;

{ TMyObj1 }

constructor TMyObj1.create;
begin
FNum :=6;
end;

function TMyObj1.getNum: Int64;
begin
result:=FNum;
end;

procedure TMyObj1.setNum(const Value: Int64);
begin
FNum := Value;
end;
//////////////////////////////////////////////////////
var
MyObj1:TMyObj1;
MyObj2:TMyObj2;
tmp:double;
begin
tmp:=0;

MyObj1 :=TMyObj1.Create;
tmp:=MyObj1.Num;
MyObj1.Free;

MyObj2:=TMyObj2.Create;
tmp:=MyObj2.Size;
MyObj2.Free;

end;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
705
import
I
后退
顶部