Советы по Delphi. Версия 1.4.3 от 1.1.2001 (Озеров) - страница 3

>function  currency2str (value: double): string;

> const hundreds: array [0..9] of string = ('',' сто',' двести',' триста',' четыреста',' пятьсот',' шестьсот',' семьсот',' восемьсот',' девятьсот');

> tens: array [0..9] of string = ('','',' двадцать',' тридцать',' сорок',' пятьдесят',' шестьдесят',' семьдесят',' восемьдесят',' девяносто');

> ones: array [0..19] of string = ('','','',' три',' четыре',' пять',' шесть',' семь',' восемь',' девять',' десять',' одиннадцать',' двенадцать',' тринадцать',' четырнадцать',' пятнадцать',' шестнадцать',' семнадцать',' восемнадцать',' девятнадцать');

> razryad: array [0..6] of string = ('',' тысяч',' миллион',' миллиард',' триллион',' квадриллион',' квинтиллион');

> var s: string; i: integer; val: int64;


> function shortnum(s: string; raz: integer): string;

> begin

>  Result:=hundreds[StrToInt(s[1])];

>  if strtoint(s)=0 then exit;

>  if s[2]<>'1' then begin

>   Result:=Result+tens[StrToInt(s[2])];

>   case strtoint(s[3]) of

>   1: if raz=1 then result:=result+' одна' else result:=result+' один';

>   2: if raz=1 then result:=result+' две' else result:=result+' два';

>   else result:=result+ones[strtoint(s[3])];

>   end;

>   Result:=Result+razryad[raz];

>   case strtoint(s[3]) of

>   0,5,6,7,8,9: if raz>1 then result:=result+'ов';

>   1: if raz=1 then result:=result+'а';

>   2,3,4: if raz=1 then result:=result+'и' else if raz>1 then result:=result+'а';

>   end;

>  end else begin

>   Result:=Result+ones[StrToInt(Copy(s,2,2))];

>   Result:=Result+razryad[raz];

>   if raz>1 then result:=result+'ов';

>  end;

> end;


>begin

> val:=Trunc(value);

> if val=0 then begin result:='ноль'; exit; end;

> s:=IntToStr(val); Result:=''; i:=0;

> while length(s)>0 do begin

>  Result:=shortNum(Copy('00'+s,Length('00'+s)-2,3),i)+Result;

>  if length(s)>3 then s:=copy(s,1,length(s)-3) else s:='';

>  inc(i);

> end;

> s:=IntToStr(Trunc((value-val)*100+0.5));

> Result:=Result+' руб. '+s+' коп.';

>end;

Даты

Добавление даты и времени в компонент Memo

Delphi 1

>{ Следующий код вставляет значение даты/времени в memo-поле. }

>Var

> s : string;

>begin

> s :=  DateToStr( Date ) + ' ' + TimeToStr( Time ) + '  :';

> Memo1.Lines.Insert(0, s);

> Memo1.SetFocus;

> Memo1.SelStart := Length(s);

> Memo1.SelLength := 0;

Вычисление даты Пасхи II

Delphi 1

>function easter (year: integer): tdatetime;

>{----------------------------------------------------------------}

>{ Вычисляет и возвращает день Пасхи определенного года.          }

>{ Идея принадлежит Mark Lussier, AppVision <[email protected]>.  }

>{ Скорректировано для предотвращения переполнения целых, если по }

>{ ошибке передан год с числом 6554 или более.                    }