# HG changeset patch # User Wuzzy # Date 1538509887 -7200 # Node ID 94d0d1ab7a0efc39a437fbcd227fec1b6823187b # Parent cf7626f46bb2c58393775b60d7b3a4f5219672fd Rewrite StrToInt code in uStore; get rid of "try" and "except" keywords diff -r cf7626f46bb2 -r 94d0d1ab7a0e hedgewars/uStore.pas --- a/hedgewars/uStore.pas Tue Oct 02 21:26:25 2018 +0200 +++ b/hedgewars/uStore.pas Tue Oct 02 21:51:27 2018 +0200 @@ -772,8 +772,9 @@ var i: LongInt; f: PFSFile; key, value, l, temp: shortstring; - color: Longword; - c: byte; + color, tempColor: Longword; + clanID, tempClanID: byte; + conversionSuccess: boolean; begin if cOnlyStats then exit; @@ -786,6 +787,7 @@ while (not pfsEOF(f)) and (l <> '[colors]') do pfsReadLn(f, l); + conversionSuccess:= false; while (not pfsEOF(f)) and (l <> '') do begin pfsReadLn(f, l); @@ -801,11 +803,11 @@ if temp = 'color' then begin temp:= copy(key, 6, length(key) - 5); - try - c:= StrToInt(temp); - except - on E : EConvertError do continue; - end; + tempClanID:= StrToInt(temp, conversionSuccess); + if conversionSuccess then + clanID:= tempClanID + else + continue; end else continue; @@ -820,15 +822,15 @@ if value[1] <> '#' then continue; temp:= copy(value, 2, length(value) - 1); - try - color:= StrToInt('0x'+temp); - except - on E : EConvertError do continue; - end; + tempColor:= StrToInt('0x'+temp, conversionSuccess); + if conversionSuccess then + color:= tempColor + else + continue; end; - if c <= cClanColors then - ClanColorArray[c]:= color; + if clanID <= cClanColors then + ClanColorArray[clanID]:= color; end; diff -r cf7626f46bb2 -r 94d0d1ab7a0e hedgewars/uUtils.pas --- a/hedgewars/uUtils.pas Tue Oct 02 21:26:25 2018 +0200 +++ b/hedgewars/uUtils.pas Tue Oct 02 21:51:27 2018 +0200 @@ -50,6 +50,7 @@ function IntToStr(n: LongInt): shortstring; function StrToInt(s: shortstring): LongInt; +function StrToInt(s: shortstring; var success: boolean): LongInt; function FloatToStr(n: hwFloat): shortstring; function DxDy2Angle(const _dY, _dX: hwFloat): real; inline; @@ -331,9 +332,22 @@ str(n, IntToStr) end; -function StrToInt(s: shortstring): LongInt; +// Convert string to longint, with error checking. +// Success will be set to false when conversion failed. +// See documentation on Val procedure for syntax of s +function StrToInt(s: shortstring; var success: boolean): LongInt; +var Code: Word; begin -val(s, StrToInt); +val(s, StrToInt, Code); +success:= Code = 0; +end; + +// Convert string to longint, without error checking +function StrToInt(s: shortstring): LongInt; +var success: boolean; // ignored +begin +success:= true; // avoid compiler hint +StrToInt:= StrToInt(s, success); end; function FloatToStr(n: hwFloat): shortstring;