Вот тебе функция... (проверено - работает)
SrcStr - исходный текст.
Count - по сколько разбивать.
Код:
function TForm1.Scrambler(SrcStr: string; Count: integer): string;
var
S: TStringList;
i,n: Integer;
begin
Result:='';
if Count >= length(SrcStr) then
begin
Application.MessageBox('Слишком короткий текст',
'Error',mb_OK+mb_ICONERROR);
Exit;
end;
S:=TStringList.Create;
for i:=0 to (length(SrcStr) div Count) do
S.Add(Copy(SrcStr,Count*i+1,Count));
Randomize;
i:=0;
while i<>(length(SrcStr) div Count)+1 do
begin
n:=Random((length(SrcStr) div Count)+1);
if S.Strings[n]<>'*' then
begin
Result:=Result+S.Strings[n];
S.Strings[n]:='*';
inc(i);
end;
end;
S.Free;
end;
Использовать так: Edit1.Text:= Scrambler('Randomize', 3);