C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[311] [만해] 숫자를 한글 금액으로 치환 함수 개정판 입니다.
만해 [greenuri] 7280 읽음    2002-02-19 16:12
안녕하세요 만해입니다.

제가 올려놓은 숫자를 한글 금액으로 치환하는 변수를 조금 바꿔봤습니다.

지난달 오프때 페페루님께서 애기해준 방식으로 해봤는데요

괘않네요

지난번꺼하고 속도 비교는 아직 못 해봤는데

조금 나을거라 생각합니다.

참 그리고요 IF문을 그냥 간단히 3항 연산자로 고쳤습니다.

도움이 됐어면 하네요 그럼 이만~

ps.~ 저도 언젠간 좋은 Tip을 올릴수 있는 고수가 되길 바라며~ 넘 허접~

AnsiString TForm1::NumberToHangul(AnsiString Data)
{
  AnsiString Digit[5]={"","천","백","십",""}; // 여기는 4자리 이내의 자릿수
  AnsiString Carry[6] = {"원","만","억","조","경","해"}; // 여기는 자릿수 들어 가고요
  AnsiString Number[10] = {"","일","이","삼","사","오","육","칠","팔","구"}; //각각의 숫자
  AnsiString OutData="";
  AnsiString SData="";

  for ( ; (Data.Length() %4) ;)
    Data = "0" + Data;  // 4배수 만큼 자릿수가 안되면 4배수 만큼 앞에다 0을 넣습니다.

  for (int i=0; Data.Length() >= 4 ;i++ )
    {
      AnsiString temp = Data.SubString(Data.Length()-3,4);
      Data = Data.Delete(Data.Length()-3,4);
      for ( int j = 1 ; j < 5 ; j++ )
        {
          (temp[j] == '0') ?   //temp[j] 가 0 인지 비교
          OutData = OutData + Number[StrToInt(temp[j])] :          // temp[j] 가 0이면
          OutData = OutData + Number[StrToInt(temp[j])]+ Digit[j]; // temp[j] 가 0이 아니면
        }

      (OutData == "") ? // OutData가 공백인지 비교
        SData = OutData + SData :           // OutData가 공백이면
        SData = OutData + Carry[i] + SData; // OutData가 공백이 아니면

      OutData = "";  //OutData 초기화
    }
  return SData;
}

+ -

관련 글 리스트
311 [만해] 숫자를 한글 금액으로 치환 함수 개정판 입니다. 만해 7280 2002/02/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.