2015骨架程序的程序有一些主要的验证问题,特别是输入类型验证。对于此过程,如何确保用户输入SOMETHING和INTEGER。
程序代码:
Procedure GetMove(Var StartSquare, FinishSquare : Integer);
Begin
Write('Enter coordinates of square containing piece to move (file first): ');
Readln(StartSquare);
Write('Enter coordinates of square to move piece to (file first): ');
Readln(FinishSquare);
End;
我知道这是基本的,虽然我很奇怪我不知道。
答案 0 :(得分:0)
您想要输入电子表格单元格引用之类的坐标。例如,A1,B17。您需要查找第一个数字并在该点分割字符串。然后验证这两部分。我假设与电子表格一样,alpha部分是列,数字部分是行。
function TryDecodeCoord(const coord: string; out col: string; out row: Integer): Boolean;
var
FirstDigit: Integer;
begin
FirstDigit := 1;
while (FirstDigit <= Length(coord)) and (IsDigit(coord[FirstDigit])) do
Inc(FirstDigit);
if (FirstDigit = 1) or (FirstDigit > Length(coord)) then
begin
Result := False;
Exit;
end;
col := Copy(coord, 1, FirstDigit - 1);
if not TryStrToInt(Copy(coord, FirstDigit, MaxInt), row) then
begin
Result := False;
Exit;
end;
Result := True;
end;
您需要实施IsDigit
。现代版本的Delphi为这类东西提供RTL功能。否则,您可以随时检查字符是>='0'
还是<='9'
。
我希望你想要比这更多的验证。并且可能是将列从文本转换为整数的方法。但这应该让你去。