Microsoft Agent. Часть II
03.12.2007 от Иван ШиркоЕсли нажать на кнопку, то Джин начнёт говорить и сразу же появится сообщение. А если снять комментарии со строки waitfor(Request);, то сообщение появится только после того, как Джин закончит говорить.
А сейчас «научим» Джина вслух произносить текущее время. Для этого ему нельзя подсунуть строку типа «21 час 44 минуты 32 секунды», эту строку он произнесёт так: «двадцать один час, сорок четвёртого минуты, тридцать второго секунды». В связи с этим, Джину нужно полностью «разжевать», что именно он должен произносить. Так что будем давать ему такую строку: «21 час, 44 минуты, 30 две секунды». Т.е. число, стоящее в женском роде (32 секунды), разделяем на составляющие (30 две секунды).
Добавьте на форму очередную кнопку «Сколько времени?» и запишите следующую процедуру:
procedure TForm1.Button1Click(Sender: TObject);
var
buf, str: string;
Hour, Min, Sec, Msec: Word;
Hours, Mins, Secs: string;
hs, ms, ss: string;
DT: TDateTime;
begin
hs := '';
ms := '';
ss := '';
//узнаём текущее время
DT := Now;
//разбиваем его на составляющие
DecodeTime(DT, Hour, Min, Sec, MSec);
//смотрим, какое окончание должно быть у слова «час»
case hour of
2..4, 22, 23: hs := 'а';
0, 5..20: hs := 'ов';
end;
//окончание слова «минута»
case min of
1, 21, 31, 41, 51: ms := 'а';
2..4, 22..24, 32..34, 42..44, 52..54: ms := 'ы';
end;
//окончание слова «секунда»
case sec of
1, 21, 31, 41, 51: ss := 'а';
2..4, 22..24, 32..34, 42..44, 52..54: ss := 'ы';
end;
//часы не будем преобразовывать, т.к. слово «час» мужского рода
hours := inttostr(hour);
//при необходимости разбиваем минуты на слова
mins := inttostr(min);
if (mins[length(mins)] = '1') and (min <> 11) then
begin
if (min > 10) then buf := mins[1] + '0 '
else buf:='';
mins := buf + 'одна';
end
else
begin
if (mins[length(mins)]='2') and (min<>12) then
begin
if (min>10) then buf:=mins[1]+'0 '
else buf:='';
mins := buf + 'две';
end
end;
//при необходимости разбиваем секунды на слова
secs := inttostr(sec);
if (secs[length(secs)]='1') and (sec<>11) then
05.06.2008 в 05:31
Просто превосходно!
17.07.2008 в 17:36
Конкретно и понятно.