안녕하세요 만해 입니다.
쩝 이거 허접해서~ 올려도 될런지 모르겠네요
제가 지난해 까지 아르바이트 하면서 델로 만든거 방금 생각이 나서
빌더로 바꿨습니다.
AnsiString __fastcall NumberToHangul ( AnsiString Data )
{
AnsiString Digit[5]={"","천","백","십",""}; // 여기는 4자리 이내의 자릿수
AnsiString Carry[6] = {"원","만","억","조","경","해"}; // 여기는 자릿수 들어 가고요
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++ )
{
switch ( StrToInt(temp[j]) )
{
case 0 : OutData = OutData + "" ;break;
case 1 : OutData = OutData + "일"+ Digit[j];break;
case 2 : OutData = OutData + "이"+ Digit[j];break;
case 3 : OutData = OutData + "삼"+ Digit[j];break;
case 4 : OutData = OutData + "사"+ Digit[j];break;
case 5 : OutData = OutData + "오"+ Digit[j];break;
case 6 : OutData = OutData + "육"+ Digit[j];break;
case 7 : OutData = OutData + "칠"+ Digit[j];break;
case 8 : OutData = OutData + "팔"+ Digit[j];break;
case 9 : OutData = OutData + "구"+ Digit[j];break;
}
}
if (OutData == "")
SData = OutData + SData;
else
SData = OutData + Carry[i] + SData;
OutData = "";
}
return SData;
}
이 소스는요 조금 단순한건데
Data를 가져와서 끝에서부터 4자리씩 읽어 들여서
그 네자리를 한글로 바꾼후에 자릿수를 더하고
그담의 4자리 가져와서 한글로 바꾼후 접번에 바꾼곳 앞에다 저장합니다.
그냥 단순해요~ 도움이 될지 모르겠네요
그럼 이만
참 참고로 해 이상의 자릿수 넣어 실려면요
AnsiString Carry[6] = {"원","만","억","조","경","해"}; // 여기는 자릿수 들어 가고요
위의 소스에서 배열을 늘리시고요 해 뒤에 해 다음 단위를 나타내는 한글을 입력 하면 됩니다.
그럼 참고 하세요
|