Показать сообщение отдельно
  #11  
Старый 12.02.2015, 14:31
Deman1986 Deman1986 вне форума
Прохожий
 
Регистрация: 03.11.2013
Сообщения: 32
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Я сделал немного по хитрому добавил вторую кнопку с названием "Словестная форма"
Код:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

function IntToRome(Value : Integer) : String;
const
  Romes : Array [1..9] Of String =
    ('I','II','III','IV','V','VI','VII','VIII','IX');
begin
  If Not (Value In [1..9])
    Then Raise Exception.Create('значение должно быть в диапазоне 1..9.');
  Result := Romes[Value];
end;

function IntToWord(Value : Integer) : String;
const
  Wordes : Array [1..9] of String =
    ('Один','Два','Три','Четыре','Пять','Шесть','Семь','Восемь','Девять');
begin
  If not (Value In [1..9])
    Then Raise Exception.Create('значение должно быть в диапазоне Один..Девять.');
  Result := Wordes[Value];
end;

procedure GetNumbers(var A : Array of Integer);
var
  I, Idx : Integer;
  B : Array [0..8] Of Integer;
begin
  If (Length(A) > 9) Or (Length(A) < 1)
    Then Raise Exception.Create('входной массив дорлжен иметь длину 1 to 9. ');

  // инициализация временного массива
  For I := 0 to 8 Do B[i] := 0;
 
  // генерация листа
  For I := 1 to 9 Do
    Begin
      Idx := Random(9);
      While B[Idx] <> 0 Do
        If Idx = 8 Then Idx := 0 Else Inc(Idx);
      B[Idx] := I;
    End;
 
  // копирование результатат в выходной массив
  For I := Low(A) To High(A) Do A[i] := B[i];
end;

procedure TForm1.Button1Click(Sender: TObject);
var
N, I : Integer;
  A : Array Of Integer;
    S : String;
begin
Randomize;
  N := Random(9)+1; // Random числа 1..9
    SetLength(A,N); // выделение памяти массиву
      GetNumbers(A);
// Отображение результата
S := '';
  For I := Low(A) To High(A) Do
    Begin
        S := S + IntToRome(A[i]);
      If I < High(A) Then S := S + ', ';
    End;
  ShowMessage(S);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
N, I : Integer;
  A : Array Of Integer;
    S : String;
begin
Randomize;
  N := Random(9)+1; // Random слова Один..Девять
    SetLength(A,N); // выделение памяти массиву
      GetNumbers(A);
// Отображение результата
S := '';
  For I := Low(A) To High(A) Do
    Begin
        S := S + IntToWord(A[i]);
      If I < High(A) Then S := S + ', ';
    End;
  ShowMessage(S);
end;

end.
вот так получилось
Ответить с цитированием