2017-10-05 7 views
-5

基本的には入力があり、ユーザー入力が3つ以上の連続する文字を使用しているかどうかをQWERTYのキーボードレイアウトから確認したい。これは、Q-W-EまたはY-U-I-O-Pを意味する。まず、ユーザー入力を文字列変数に格納し、ansiLowerCase関数を使用して入力を小文字に変換しました。 QWERTYレイアウトを定数文字列として宣言し、strscan関数を使用しても役に立たなかったので、私はうんざりしました。どんな助けでも大変感謝します。デルファイ・コンソール・アプリケーションのqwertyキーボードから連続した文字が入力されたかどうかをどのように確認できますか?

+3

を実質的に同一のq 2日前にここに掲載し、後で削除がありました。これはあなたが設定されている授業の仕事ですか? – MartynA

+0

実際、私はコーディングチャレンジブックレットからやっていたプログラムを拡張しようとしていました。このウェブサイトからは:https://drive.google.com/file/d/0B1pbdiI9H_RiUkl0cXcySUJCOTg/view、タスク24でした –

答えて

0

はこのような何かを試してみてください:

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; 

次にあなたがこれを行うことができます:

var 
    input: string; 
begin 
    input := ...; 
    if HasThreeConsecutiveLetters(input) then 
    ... 
    else 
    ... 
end; 
関連する問題