Hier mal die nötigen Codes, damit keine Hex-Werte als Ergebnis zugelassen werden
Delphi-Quellcode:
function ValNoHex(const s: String; var code: Integer): Longint;
var
I: Integer;
Negative: Boolean;
begin
I := 1;
code := -1;
Result := 0;
Negative := False;
while (I <= Length(s)) and (s[I] = ' ') do
Inc(I);
if I > Length(s) then Exit;
case s[I] of
'-': begin
Negative := True;
Inc(I);
end;
'+': begin
Inc(I);
end;
end;
while I <= Length(s) do
begin
if (Result > (High(Result) div 10)) or (not (s[I] in ['0'..'9'])) then
begin
code := I;
Exit;
end;
Result := Result * 10 + Ord(s[I]) - Ord('0');
Inc(I);
end;
if Negative then
begin
Result := -Result;
end;
code := 0;
end;
function StrToIntNoHex(S: string): Longint;
var
E: Integer;
begin
Result := ValNoHex(S, E);
if E <> 0 then raise EConvertError.CreateResFmt(@SInvalidInteger, [S]);
end;
function StrToIntDefNoHex(S: string; Default: LongInt): Longint;
var
E: Integer;
begin
Result := ValNoHex(S, E);
if E <> 0 then
Result := Default;
end;
Anstatt StrToInt und StrToIntDef nutze StrToIntNoHex und StrToIntDefNoHex
...
...