【发布时间】:2016-09-05 08:03:08
【问题描述】:
试图将这部分Delphi 代码转换为C#,但我对if/else 语句的以下else 部分实际结束的位置感到困惑。以下是代码的确切格式:
try
Root:=ExtractFileRoot(FileName);
ErrorStr:=ExtractFileRoot(FileName)+' invalid name';
if not GetNextNumericSegment(Root,Segment) then exit;
if length(Segment) = 4 then
begin
Year:=StrToInt(Segment);
GetnextNumericSegment(Root,Segment)
end
else // Where does this else statement end?
Year:=Defaultyear;
ErrorStr:=ExtractFileRoot(FileName)+' invalid';
if Length(Segment) <> 3 then exit;
Jday:=StrToInt(Segment);
ErrorStr:=ExtractFileRoot(FileName)+' Bad File';
if not GetNextNumericSegment(Root,Segment) then exit; // bad Time of day
GetTimeFromFileName:=EncodeDate(Year,1,1)+Jday-1+
EncodeTime(StrToInt(Copy(Segment,1,2)),StrToInt(Copy(Segment,3,2)),StrToInt(Copy(Segment,5,2)),0);
except
GetTimeFromFileName:=0;
end;
我知道您不必使用开始/结束,但到目前为止我在此代码中看到的所有内容都使用了它。我还读到您不需要在声明的if 部分中使用;,并且else 之后的第一个; 是else 的结尾。
我的猜测是else 和except 之前的所有内容都是else 语句的一部分。
注意:如果我可以实际调试,这将很容易,但不幸的是,我只是获得了 sn-ps 的代码和函数,以便在没有真实上下文的情况下进行转换。
【问题讨论】:
-
else将在此语句之后结束:Year:=Defaultyear; -
谢谢!我能问这是为什么吗?是因为格式还是其他原因?
-
尝试阅读该语言的文档。真的没有什么可以替代将带来的理解。
-
也许this answer 会有所帮助。
-
@pfinferno - 如果您的代码格式与上述示例一样糟糕,我建议您使用代码格式化程序。旧版本的 Delphi 没有内置的,但有几个第三方免费的可用 - 请参阅 stackoverflow.com/questions/402737/delphi-code-formatter
标签: delphi if-statement delphi-7