时长12:34:56转成秒的函数?1234567.89转中文货币的函数?
请给出算法谢谢

解决方案 »

  1.   

    1.showmessage(inttostr(SecondOfTheDay(strtodatetime('17:55:20'))));
    2.{*************************************************************************
        函数 : CashToChinese
        输入 : dAmount:extended //小数点后:2位;小数点前:15位
        返回 : 大写金额
        描述 :小写金额转大写
    **************************************************************************}
    function TPubFunc.CashToChinese(dAmount: extended): string;
    const
            BITNUM = 15;
            upper_cash: array[0..10] of pchar = ('零', '壹', '贰', '叁', '肆', '伍',
                    '陆', '柒', '捌', '玖', #0);
            unit_cash: array[0..BITNUM - 1] of pchar = (
                    '万', '仟', '佰', '拾', '亿', '仟', '佰', '拾', '万', '仟',
                    '佰',
                    '拾', '元', '角', '分');
    var
            sRet: string;
            sAmt: string;
            i, ilen: integer;
            iCode: integer;
            sMessage: string;
            BFlag: Boolean;
    begin
            BFlag := True;
            sRet := '';
            if not (dAmount > 0.000001) then
                    iCode := -1
            else
                    iCode := 1;        dAmount := abs(dAmount);
            //去除小数点
            sAmt := FloatToStr(dAmount * 100);
            if (Pos('.', sAmt) <> 0) then
            begin
                    sMessage := '小数点后位数只能两位';
                    exit;
            end;
            ilen := length(sAmt);
            for i := BITNUM - ilen to BITNUM - 1 do
            begin
                    if ord(sAmt[i - BITNUM + ilen + 1]) <> $30 then
                    begin
                            sRet := sRet + upper_cash[ord(sAmt[i - BITNUM + ilen +
                                    1]) - $30];
                            sRet := sRet + unit_cash[i];
                    end
                    else
                    begin
                            if (i = 5) then //千万
                            begin
                                    //如百万、十万、个万  都为0,不加单位
                                    if (ord(sAmt[i - BITNUM + ilen + 2]) = $30) and
                                            (ord(sAmt[i - BITNUM + ilen + 3]) = $30)
                                            and
                                            (ord(sAmt[i - BITNUM + ilen + 4]) = $30)
                                            then
                                            BFlag := false;
                            end
                                    //加单位:亿、万、元
                            else if (i = 12) or (i = 4) or ((i = 8) and BFlag) then
                                    sRet := sRet + unit_cash[i];                        //连续两个零:加零
                            if (ord(sAmt[i - BITNUM + ilen + 2]) <> $30) and
                                    (ord(sAmt[i - BITNUM + ilen + 2]) <> $0) then
                                    sRet := sRet + upper_cash[ord(sAmt[i - BITNUM +
                                            ilen + 1]) - $30];
                    end;
            end;
            if (sAmt[ilen] = #48) and (sAmt[ilen - 1] = #48) then
                    sRet := sRet + '整';
            if (iCode = -1) then
                    Result := '负' + sRet
            else
                    Result := sRet;
    end;
      

  2.   

    //转秒
     Edit1.Text:=FloatToStr(StrToTime('12:34:56')*24*3600);