在delphi控制台应用程序中,如何验证是否从qwerty键盘输入了连续字母?

在delphi控制台应用程序中,如何验证是否从qwerty键盘输入了连续字母?,delphi,console-application,password-checker,Delphi,Console Application,Password Checker,基本上,我有一个输入,我想验证用户输入是否使用了qwerty键盘布局中的3个或更多连续字母。我的意思是Q-W-E或Y-U-I-O-P。首先,我将用户输入存储在一个字符串变量中,并使用ansiLowerCase函数将输入转换为小写。我把qwerty布局声明为一个常量字符串,并使用strscan函数,但没有用。非常感谢您的帮助。尝试以下方法: function HasThreeConsecutiveLetters(const Str: string): Boolean; const Qwerty

基本上,我有一个输入,我想验证用户输入是否使用了qwerty键盘布局中的3个或更多连续字母。我的意思是Q-W-E或Y-U-I-O-P。首先,我将用户输入存储在一个字符串变量中,并使用ansiLowerCase函数将输入转换为小写。我把qwerty布局声明为一个常量字符串,并使用strscan函数,但没有用。非常感谢您的帮助。

尝试以下方法:

function HasThreeConsecutiveLetters(const Str: string): Boolean;
const
  QwertyLetters: array[0..2] of string = (
    'QWERTYUIOP',
    'ASDFGHJKL',
    'ZXCVBNM'
  );
var
  I, J, K: Integer;
  S: String;
begin
  Result := False;
  S := AnsiUpperCase(Str);
  for I := 1 to Length(S) do
  begin
    for J := Low(QwertyLetters) to High(QwertyLetters) do
    begin
      K := Pos(S[I], QwertyLetters[J]);
      if (K <> 0) and
         ((K+2) <= Length(QwertyLetters[J])) and
         (Copy(S, I, 3) = Copy(QwertyLetters[J], K, 3)) then
      begin
        Result := True;
        Exit;
      end;
    end;
  end;
end;

两天前这里发布了一个几乎相同的q,后来被删除了。这是你设定的课程任务吗?事实上,我正试图扩展我在一本编码挑战手册中所做的一个程序。它来自于这个网站:是任务24
var
  input: string;
begin
  input := ...;
  if HasThreeConsecutiveLetters(input) then
    ...
  else
    ...
end;