0

ユーザーがカスタマイズできるパラメーター化された関数に基づいて、GenString長さのランダムな文字列を返す関数を作成したいと考えています。[0 .. 100]GenChar

つまり、あるユーザーがすべてas の文字列を生成したい場合、常に を返す関数を渡すことでそれを行うことができ、別のユーザーは、ランダムなヘブライ文字を返すaカスタム関数を渡すことで、ランダムなアルファベットのヘブライ語を生成することができます。GenChar

補題 1: 渡された関数が返すGenArray型の配列を生成する関数を書きたい。GenThing : sometypeこれはフリー パスカルで実行できますか。

補題 2: 私がやろうとしているのは、QuickCheckを Free Pascal に移植することです。

4

1 に答える 1

7

例を次に示します。国際文字が言及されているため、Unicode 文字列が使用されます。

//The functions

type
  TGenChar = function: widechar;

function GenString(MaxLength: integer; GenChar: TGenChar): widestring;
var
  i: integer;
begin
  if MaxLength < 1 then
    MaxLength:= 1; //minimum length is 1
  setlength(result, random(MaxLength+1));
  for i:= 1 to length(result) do
    result[i]:= GenChar;
end;


//The usage example (remember to call randomize somewhere in your program)

var
  SampleCharSet: widestring= 'ABCxyz';

function SampleGenChar: widechar;
begin
  result:= SampleCharSet[random(length(SampleCharSet))+1];
end;

function GetRandomStringSample: widestring;
begin
  result:= GenString(100, SampleGenChar);
end;
于 2012-09-15T01:33:50.007 に答える