Delphi 输入变量类型验证

Delphi 输入变量类型验证,delphi,pascal,freepascal,Delphi,Pascal,Freepascal,2015年框架计划的计划存在一些主要的验证问题,特别是输入类型验证。对于此过程,如何确保用户输入某物和整数 程序代码: Procedure GetMove(Var StartSquare, FinishSquare : Integer); Begin Write('Enter coordinates of square containing piece to move (file first): '); Readln(StartSquare); Write('Enter coordi

2015年框架计划的计划存在一些主要的验证问题,特别是输入类型验证。对于此过程,如何确保用户输入某物和整数

程序代码:

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;

我知道这是基本的,但奇怪的是我不知道。

您想输入一个坐标,就像电子表格单元格引用一样。例如,A1,B17。您需要查找第一个数字并在该点拆分字符串。然后对这两部分进行验证。我假设,就像电子表格一样,字母部分是列,数字部分是行

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',您自己是否做过任何努力?您是否测试过,如果您尝试输入整数以外的内容,会发生什么情况?你试过什么都不输入吗?只需按Enter键,看看发生了什么,变量中的值是什么?你认为如何将坐标复数输入到一个整数中?如果你真的不知道,那么你需要去和你的导师谈谈。询问一些提示,复习课堂上的笔记,重读本作业随附的书中的章节。无礼和徒劳的回答。要求澄清;我们没有老师。在你马上得出偏执的结论之前,你可能要问一下。请原谅我的无知——“2015年骨架计划”是什么?@Hugh你需要问一下这本书的作者question@Hugh,用户可能正在上编程课,并且讲师已经向学生发布了一些文件,这些文件将在今年的课程中使用。学生们需要充实所提供的框架代码来完成作业。用户可能直接引用了第一段中的作业文本。假设作业的观众是该班的学生,他们会知道2015年骨架计划指的是什么。用户缺乏经验,无法意识到文本可能需要重新措辞,以便对其他读者(如我们)有意义。aaaah-我想一定是与费·帕斯卡有关。谢谢。@Hugh我只是想知道我是否做错了什么