把一个整数转换为形如NNN,NNN,NNN的字符串输出,要求不能用inttostr之类的函数

解决方案 »

  1.   

    我写的一个函数:
    function GetFileSizeString(const Size: Integer): string;
    var
      I,J: Integer;
    begin
      Result := IntToStr(Size);
      J := 0;
      for I := Length(Result) downto 2 do
      begin
        Inc(J);
        if J = 3 then
        begin
          Insert(',',Result,I);
          J := 0;
        end;
      end;
    end;
      

  2.   

    function InttoStrA(Value: integer): string;
    var
      OutChar:Char;
      Count:integer;
    begin
      Result:='';
      Count:=0;
      while Value>10 do
      begin
        OutChar:=Char((Value Mod 10)+Ord('0'));
        Value:=Value div 10;
        Inc(Count);
        Result:=OutChar+Result;
        if (Count mod 3)=0 then
          Result:=','+Result;
      end;
      Result:=Char(Value+Ord('0'))+Result;
    end;测试通过,给分吧.
      

  3.   

    while Value>10 do
    改成 
    while Value>=10 do
      

  4.   

    function Convert(para:integer):string;
    var s:string;
    begin
       if para<1000 then begin
         s:=chr(para div 100+48)
                +chr((para mod 100) div 10+48)
                +chr(para mod 10+48);
       end
       else begin
         s:=Convert(para div 1000);
         result:=s+','+chr((para mod 1000) div 100+48)
                +chr(((para mod 1000) mod 100) div 10+48)
                +chr((para mod 1000) mod 10 +48);
       end;
    end;
      

  5.   

    贴错了,应该是:
    function Convert(para:integer):string;
    var s:string;
    begin
       if para<1000 then begin
         result:=chr(para div 100+48)
                +chr((para mod 100) div 10+48)
                +chr(para mod 10+48);
       end
       else begin
         s:=Convert(para div 1000);
         result:=s+','+chr((para mod 1000) div 100+48)
                +chr(((para mod 1000) mod 100) div 10+48)
                +chr((para mod 1000) mod 10 +48);
       end;
    end;
      

  6.   

    简化:
    function Convert(para:integer):string;
    begin
       if para<1000 then begin
         result:=chr(para div 100+48)
                +chr((para mod 100) div 10+48)
                +chr(para mod 10+48);
       end
       else begin
         result:=Convert(para div 1000)+','+chr((para mod 1000) div 100+48)
                +chr(((para mod 1000) mod 100) div 10+48)
                +chr((para mod 1000) mod 10 +48);
       end;
    end;