随便新开一个Project(我只在D7和D2005 for Win32里面试过),然后在Unit1里面加入以下代码:type
TIPv4ItemText = array[1..3] of Char;
TIPv4Item = record
Cnt: Byte;
Text: TIPv4ItemText;
end; TIPv4Addr = array[1..4] of TIPv4Item;
PIPv4Addr = ^TIPv4Addr;function IsIPMatch(const aIPv4Addr, aPattern: TIPv4Addr): Boolean;
var
I, J: Integer;
begin
Result := False; for I := 1 to 4 do
begin
if aPattern[I].Text[1] = '*' then
begin
Result := True;
Exit;
end; if aIPv4Addr[I].Cnt <> aPattern[I].Cnt then
Exit; for J := 1 to aIPv4Addr[I].Cnt do
begin
if aIPv4Addr[I].Text[J] <> aPattern[I].Text[J] then
Exit;
end;
end; Result := True;
end;编译可以通过,但是如果要Build,你会看到:
D7:
[Fatal Error] Unit1.pas(XXX): Internal error: C1143D2005:
[Fatal Error] Unit1.pas(XXX): F2084 Internal Error: C1205
只有把
// if aIPv4Addr[I].Text[J] <> aPattern[I].Text[J] then
// Exit;
注释掉或者改成别的形式才可以通过链接只有Delphi 3是我的知音,以上代码能编译连结并正确执行
还有,象下面的这样的一个过程:
procedure P;
var
I: Longword;
begin
for I := Low(I)+1 to High(I)-1 do
begin
....
end;
end;
居然产生一个hint
[Hint] XXXXX.pas (XXX); FOR or WHILE loop executes zero times - deleted
循环内的代码被忽略,,,
Delphi 3里没有提示,也不会忽略循环内的代码,但是编译的结果不正确
还有一些package,D7里好好的,Delphi 2005硬是打不开,也不提示出错,不知道什么原因
无言,borland的chief scientist,一代不如一代啊
TIPv4ItemText = array[1..3] of Char;
TIPv4Item = record
Cnt: Byte;
Text: TIPv4ItemText;
end; TIPv4Addr = array[1..4] of TIPv4Item;
PIPv4Addr = ^TIPv4Addr;function IsIPMatch(const aIPv4Addr, aPattern: TIPv4Addr): Boolean;
var
I, J: Integer;
begin
Result := False; for I := 1 to 4 do
begin
if aPattern[I].Text[1] = '*' then
begin
Result := True;
Exit;
end; if aIPv4Addr[I].Cnt <> aPattern[I].Cnt then
Exit; for J := 1 to aIPv4Addr[I].Cnt do
begin
if aIPv4Addr[I].Text[J] <> aPattern[I].Text[J] then
Exit;
end;
end; Result := True;
end;编译可以通过,但是如果要Build,你会看到:
D7:
[Fatal Error] Unit1.pas(XXX): Internal error: C1143D2005:
[Fatal Error] Unit1.pas(XXX): F2084 Internal Error: C1205
只有把
// if aIPv4Addr[I].Text[J] <> aPattern[I].Text[J] then
// Exit;
注释掉或者改成别的形式才可以通过链接只有Delphi 3是我的知音,以上代码能编译连结并正确执行
还有,象下面的这样的一个过程:
procedure P;
var
I: Longword;
begin
for I := Low(I)+1 to High(I)-1 do
begin
....
end;
end;
居然产生一个hint
[Hint] XXXXX.pas (XXX); FOR or WHILE loop executes zero times - deleted
循环内的代码被忽略,,,
Delphi 3里没有提示,也不会忽略循环内的代码,但是编译的结果不正确
还有一些package,D7里好好的,Delphi 2005硬是打不开,也不提示出错,不知道什么原因
无言,borland的chief scientist,一代不如一代啊
var
I: Integer;
J: Byte; //<<<<<<<<<<
begin
Result := False; for I := 1 to 4 do
begin
if aPattern[I].Text[1] = '*' then
begin
Result := True;
Exit;
end; if aIPv4Addr[I].Cnt <> aPattern[I].Cnt then
Exit; for J := 1 to aIPv4Addr[I].Cnt do
begin
if aIPv4Addr[I].Text[J] <> aPattern[I].Text[J] then
Exit;
end;
end; Result := True;
end;
procedure P;
var
I: Integer;
begin
for I := Integer($80000000)+1 to MaxInt-1 do
begin
....
end;
end;就ok
var
I: Integer; //<<<<<<
begin
for I := Low(I)+1 to High(I)-1 do
begin
....
end;
end;这样就ok