2

文字列を検証しようとしています。文字列には、すべてのアルファベット文字と数字、および下線 ( _ ) 記号を含めることができます。

これは私がこれまでに試したことです:

var
  S: string;
const
  Allowed = ['A'..'Z', 'a'..'z', '0'..'9', '_'];
begin
  S := 'This_is_my_string_0123456789';

  if Length(S) > 0 then
  begin
    if (Pos(Allowed, S) > 0 then
      ShowMessage('Ok')
    else
      ShowMessage('string contains invalid symbols');
  end;
end;

Lazarus では、次のエラーが発生します。

エラー: arg no の型に互換性がありません。1: 「文字のセット」を取得し、「バリアント」を期待

明らかに、私の Pos の使用はすべて間違っており、私のアプローチが正しい方法であるかどうかもわかりません。

ありがとう。

4

3 に答える 3

2

Lazarus/Free Pascal はそのために pos をオーバーロードしませんが、そのためにユニット strutils に「posset」バリアントがあります。

http://www.freepascal.org/docs-html/rtl/strutils/posset.html

Andreas の (IMHO correct ) の発言については、 isemptystr を使用できます。空白のみを含む文字列をチェックすることを目的としていましたが、基本的には、文字列にセット内の文字のみが含まれているかどうかをチェックします。

http://www.freepascal.org/docs-html/rtl/strutils/isemptystr.html

于 2013-09-08T12:45:11.117 に答える