请问下面代码是什么意思(50分)

  • 主题发起人 主题发起人 kisspig2002
  • 开始时间 开始时间
K

kisspig2002

Unregistered / Unconfirmed
GUEST, unregistred user!
我在看一个组件的源代码的时候,有下面一段:
procedure THTTPGet.ThreadDone(Sender: TObject);
begin
FResult := FThread.FTResult;
if FResult then
if FThread.FTToFile then
if Assigned(FDoneFile) then FDoneFile(Self, FThread.FTFileName, FThread.FTFileSize) else
else
if Assigned(FDoneString) then FDoneString(Self, FThread.FTStringResult) else
else
if Assigned(FError) then FError(Self);
FThread := nil;
end;

我想知道这么多的else是怎么回事呀?谢谢
下面是上面变量的申明:

TOnProgressEvent = procedure(Sender: TObject; TotalSize, Readed: Integer) of object;
TOnDoneFileEvent = procedure(Sender: TObject; FileName: String; FileSize: Integer) of object;
TOnDoneStringEvent = procedure(Sender: TObject; Result: String) of object;

FProgress: TOnProgressEvent;
FDoneFile: TOnDoneFileEvent;
FDoneString: TOnDoneStringEvent;
 
是不是写错了?[:D]
 
有连续两个ELSE 的地方, 第一个ELSE不起作用,
而pascal的else前不需要;号, 所以,语句合法,
这样些,可以少写些BEGIN END ,呵呵

等于
procedure THTTPGet.ThreadDone(Sender: TObject);
begin
FResult := FThread.FTResult;
if FResult then
if FThread.FTToFile then
begin
if Assigned(FDoneFile) then FDoneFile(Self, FThread.FTFileName, FThread.FTFileSize);
end
else begin
if Assigned(FDoneString) then FDoneString(Self, FThread.FTStringResult);
end
else
if Assigned(FError) then FError(Self);
FThread := nil;
end;
 
shangshang对的,你也可以实验

if sss then sss
else if bbb then else //
else //
 
我也是认为那个else是多余的,那再多问一句,of object这中类型的函数要怎么用呀?
还有怎么对上面的语句if assigned(ffiledone) then .....做判断呀,就是说什么时候
符合那个条件?谢谢
 
帮助一下吧
 
多人接受答案了。
 
后退
顶部