Вот! Самая убийственная конструкция на собаках! Есть легенда, которая гласит что эта конструкция берёт своё начало ещё с доскриптовых времён! То есть до эпохи исторического материализмя! РЕЛИКТ! На украинский переводил сам
В связи с этим возможны дупла
Своё значение ставим вместо Proba.
[codebox]_R1:="один" : "два" : "три" : "чотири" : "п'ять" : "шість" : "сімь" : "вісім" : "дев'ять";
_R1a:="одна" : "дві" : "три" : "чотири" : "п'ять" : "шість" : "сім" : "вісім" : "дев'ять";
_R10:="десять" : "двадцять" : "тридцять" : "сорок" : "пятдесят" : "шістдесят" : "сімдесят" : "вісімдесят" : "дев'яносто";
_R20:="десять" : "одиннадцять" : "дванадцять" : "тринадцять" : "чотирнадцять" : "п'ятнадцять" : "шістнадцять" :"сімнадцять" : "вісімнадцять" : "дев'ятнадцять";
_R100:="сто" : "двісті" : "триста" : "чотириста" : "п'ятсот" : "шестсот" : "сімсот" : "вісімсот" : "дев'ятсот";
DEFAULT Proba:=0;
_P := "00" + @Text(Proba; "F2");
_txtRES := @If(@Abs(Proba)<1; "нуль "; "");
_RB := "мільярд";
_RM := "мільйон";
_RT := "тисяч";
_ER := @TextToNumber(@MiddleBack(_P; 4; -1));
_DR := @TextToNumber(@MiddleBack(_P; 5; -1));
_SR := @TextToNumber(@MiddleBack(_P; 6; -1));
_ET := @TextToNumber(@MiddleBack(_P; 7; -1));
_DT := @TextToNumber(@MiddleBack(_P; 8; -1));
_ST := @TextToNumber(@MiddleBack(_P; 9; -1));
_EM := @TextToNumber(@MiddleBack(_P; 10; -1));
_DM := @TextToNumber(@MiddleBack(_P; 11; -1));
_SM := @TextToNumber(@MiddleBack(_P; 12; -1));
_EB := @TextToNumber(@MiddleBack(_P; 13; -1));
_DB := @TextToNumber(@MiddleBack(_P; 14; -1));
_SB := @TextToNumber(@MiddleBack(_P; 15; -1));
REM "----Миллиарды-------------------";
_SBT := @If(_SB = 0; ""; @Subset(@Subset(_R100; _SB); -1)) + " ";
_DBT := @If(_DB = 0; ""; _DB > 1; @Subset(@Subset(_R10; _DB); -1) + " "; @Subset(@Subset(_R20; _EB + 1); -1) + " ");
_EBT := @If(_EB = 0; ""; _DB = 1; ""; @Subset(@Subset(_R1; _EB); -1) + " ");
@Set("_txtRES"; @If(_SB+_DB+_EB=0; _txtRES; _SBT +_DBT +_EBT+_RB + @If(_DB!=1; @If(_EB = 1; ""; _EB>1 & _EB < 5; "а"; "ів");"ів")+" "));
REM "----Миллионы---------------------";
_SMT := @If(_SM = 0; ""; @Subset(@Subset(_R100; _SM); -1)) + " ";
_DMT := @If(_DM = 0; ""; _DM > 1; @Subset(@Subset(_R10; _DM); -1) + " "; @Subset(@Subset(_R20; _EM + 1); -1) + " ");
_EMT := @If(_EM = 0; ""; _DM = 1; ""; @Subset(@Subset(_R1; _EM); -1) + " ");
@Set("_txtRES"; _txtRES + @If(_SM+_DM+_EM=0; ""; _SMT +_DMT +_EMT+_RM + @If(_DM!=1; @If(_EM=1; ""; _EM>1 & _EM < 5; "и"; "ів");"ів")+" "));
REM "----Тысячи -----------------";
_STT := @If(_ST = 0; ""; @Subset(@Subset(_R100; _ST); -1)) + " ";
_DTT := @If(_DT = 0; ""; _DT > 1; @Subset(@Subset(_R10; _DT); -1) + " "; @Subset(@Subset(_R20; _ET + 1); -1) + " ");
_ETT := @If(_ET = 0; ""; _DT = 1; ""; @Subset(@Subset(_R1a; _ET); -1) + " ");
@Set("_txtRES"; _txtRES + @If(_ST+_DT+_ET=0; ""; _STT +_DTT +_ETT+_RT + @If(_DT!=1; @If(_ET = 1; "а"; _ET>1 & _ET < 5; "і";"");"")+" "));
REM "----еденицы--------------------------";
_SRT := @If(_SR = 0; ""; @Subset(@Subset(_R100; _SR); -1)) + " ";
_DRT := @If(_DR = 0; ""; _DR > 1; @Subset(@Subset(_R10; _DR); -1) + " "; @Subset(@Subset(_R20; _ER + 1); -1) + " ");
_ERT := @If(_ER = 0; ""; _DR = 1; ""; @Subset(@Subset(_R1; _ER); -1) + " ");
@Set("_txtRES"; _txtRES +_SRT +_DRT +_ERT);
@Set("_txtRES"; @Trim(_txtRES));
@UpperCase(@Left(_txtRES; 1)) + @RightBack(_txtRES; 1)[/codebox]
To All.
Формулы не надо, я до них еще не добрался.
Та пофигу
Я должен излить!
Саморазрушающийся в конструкторе объект
Код:
Class MyClass
Sub new
Call destroy(Me)
End Sub
Sub delete
End Sub
Private Sub destroy(Me1 As MyClass)
Delete Me1
End Sub
End Class
Смысл в том, что
Set myObject=New MyClass() возврашает Nothing. Ну, ессно, в конструктор можно условие влепить, что б не всегда разрушалось.