mca*_*dre 0 string random freepascal dynamic
我想编写一个函数GenString,它[0 .. 100]根据GenChar用户可以自定义的参数化函数返回一个随机字符串长度.
也就是说,如果一个用户想要生成所有as 的字符串,他可以通过传入一个总是返回的函数来做到这一点a,而另一个用户可以通过传入一个GenChar返回随机希伯来字母的自定义函数来生成随机字母希伯来语单词.
引理1:我想编写一个函数GenArray,生成一个传入函数GenThing : sometype返回的任何类型的数组.这可以在Free Pascal中完成.
引理2:我要做的是将QuickCheck移植到Free Pascal.
这是一个例子.由于提到了国际字符,因此使用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;
Run Code Online (Sandbox Code Playgroud)