1

Pascal と FastReport は初めてです。この質問は、おそらく FastReport の知識がなくても答えられるでしょう。パスカルはデルファイです。FastReport4. 編集:パスカルスクリプトを使用しています。

入力として 8 文字の文字列を受け入れるテキスト ボックスがあります。各文字は数字でなければなりません。各文字を数値として検証しようとしています。val関数を使ってみました...

Procedure Val(S : String; var R: Real; Code : Integer);
  begin
  end;

procedure thisinputOnChange(Sender: TfrxComponent);
    var
      S     : String;
      error : Integer;
      R     : Real;    
   begin

    S := thisinput.lines.text; 
   Val (S, R, error);        
     If error > 0 then
   Button2.enabled := False;       
  end;

このコードをオンラインで入手しました。説明によると、文字を整数に変換できない場合、関数はゼロより大きいコードでエラーを返します。その説明は正しいですか?私は誤解していますか?

現在、検証が失敗した場合、ボタンの有効なプロパティを false に設定しようとしています。それをメッセージに変えるかもしれません。今のところ、ボタンのプロパティを設定して動作させたいと思います。

onChange イベントまたは別のイベントを使用する必要があるかどうかはわかりません。また、ループ内の val 関数に入力を送信する必要があるかどうかもわかりません。私が言ったように、私はちょうどこの機能の使い方を学んでいます。

長さを確認できました。このコードは機能します...

  procedure thisinputOnChange(Sender: TfrxComponent);

  begin

     if length(thisinput.lines.text) = 8 then          
        Button2.enabled := True;

  end;  

助言がありますか?val 関数などを使用する必要がありますか? さらに情報を提供する必要がある場合はお知らせください。ただし、後で確認することはできないかもしれません。助けてくれてありがとう。

4

2 に答える 2

3

procedure System.Val(S: String; var V; var Code: Integer);組み込み手続きです。自分で定義する必要はありません。

これを使用して、文字列を整数として検証できます。

var
  myInt,error : Integer;
...
Val(s,myInt,error);
Button2.Enabled := (error = 0); // ok if error is zero

文字列が無効な場合、エラーは文字列内の最初の無効な文字を指します。


オプションとして、あなたも使用することができます

function SysUtils.TryStrToInt(const S: string; out Value: Integer): Boolean;

Button2.Enabled := TryStrToInt(s,myInt); // ok if true

編集: パスカル スクリプトでの使用例は、次のVal()場所にあります: Pascal script examples.

procedure MyVal(const s: string; var n, z: Integer);
begin
  Val(s, n, z);
end;

OnCompileスクリプトを登録するときに、メソッドにプロシージャを登録します。

Sender.AddFunction(@MyVal, 'procedure Val(const s: string; var n, z: Integer)');

ドキュメントを調べるFastScript 1.9 Scripting libraryと、整数検証関数があります

function ValidInt(cInt: String): Boolean

この機能にアクセスするには、ドキュメント (P21) のガイドラインに従ってください。

「これらの関数にアクセスするには、fsGlobalUnit 参照を TfsScript.Parent プロパティに渡します。」

注: ドキュメントへのリンクを追加できませんでしたが、Google で簡単に検索するとそこにたどり着くはずです。

于 2013-11-12T22:36:00.113 に答える