Показать сообщение отдельно
  #4  
Старый 02.04.2008, 19:39
Аватар для AXS
AXS AXS вне форума
Новичок
 
Регистрация: 26.11.2006
Адрес: РК г. Талдыкорган
Сообщения: 67
Репутация: 15
По умолчанию

Вот тебе функция... (проверено - работает)
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);
Ответить с цитированием