|
임양규 님이 쓰신 글 :
: 아래한글(97)에 보시면 최근 열어봤던 문서 목록이
: c:\hnc\user\hwpw.ini 에 보시면 [Recently used Files 97] 에 저장되어있습니다.
: 제가 할려는 부분은 이 부분의 값을 읽어 와서 화면에 보여주는 것인데요..
:
: 한글이 완성형이 들어가 있어서 아주 애매합니다...
:
: 예제로 보시면,
:
: File0=_HEX_C:\5cWORK\5c\ba\ce\b5\bf\bb\ea\bb\f3\b4\e3\c0\cf\c1\f6.hwp
: Description0=
: File1=_HEX_I:\5c\c7\cf\b5\e5\b9\e9\be\f7\5cWORK\5c\b1\e8\c1\f6\bf\ac.hwp
: Description1=_HEX_\8b\b1\bb\a1\b5e
: File2=_HEX_C:\5cDocuments and Settings\5c\c0\d3\be\e7\b1\d4\5c\b9\d9\c5\c1 \c8\ad\b8\e9\5c20030915102132390_20030909140305385_\c0\ce\c5\cd\b3\dd \b0\f8\b0\ed\b9\ae.hwp
: Description2=_HEX_\8a\82 \a4w \a6\81
:
: 제 경우 이렇게 되어있는데요...이게 화면에 정상적인 한글로 표현하기가 어렵네요...
:
: 즉, c:\work\한글표현\한글표현.hwp 로 해야 하는데...
:
: 어렵네요...
:
: 제가 한 부분은 일단 ini로 되어있으니 [] 섹션에서 File0 이부분을 읽는거 까지는 됐는데요
:
: 그 다음이 안되네요...
:
: 아시는분 답변좀 바랍니다.
:
File0=_HEX_C:\WORK\부동산상담일지.hwp
Description0=
File1=_HEX_I:\하드백업\WORK\김지연.hwp
Description1=_HEX_떛빨킻
File2=_HEX_C:\Documents and Settings\임양규\바탕 화면\20030915102132390_20030909140305385_인터넷 공고문.hwp
Description2=_HEX_뒄 쨢 쫨
Description1, Description2는 글자가 이상하네요. 코드 페이지가 다를까요?
\ 뒤에 나오는 문자 2개는 문자코드를 표시하는 문자이므로 이를 char로 변환한 다음 char 배열에 담습니다.
모두 담았으면 끝에 NULL 문자를 추가한 다음 이를 AnsiString으로 만듭니다.
16진수를 표시하는 문자들을 char로 변환하려면 C++Builder에서 제공하는 함수를 사용하든지 아래와 같이 하면 됩니다.
5c의 경우의 예:
AnsiString hex("5c");
unsigned char ret=0, mul=1;
for(int i=hex.Length() ;i>=1 ;--i)
{
if(hex[i]>='0' && hex[i]<='9') ret+=(hex[i]-'0')*mul;
else ret+=(hex[i]-'a'+10)*mul;
mul *= 16;
}
void __fastcall TForm1::btnConvClick(TObject *Sender)
{
Memo2->Lines->Clear();
for(int i=0 ;i<Memo1->Lines->Count ;++i)
{
Memo2->Lines->Add(Convert(Memo1->Lines->Strings[i]));
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::Convert(AnsiString src)
{
AnsiString delim("\\"), ret;
char temp[2]={0,};
int pos=1;
while(1)
{
if((pos=src.AnsiPos(delim))==0) break;
if(pos!=1) ret += src.SubString(1,pos-1);
HexToBin(src.SubString(pos+1,2).c_str(),temp,1);
ret += temp;
src.Delete(1,pos+2);
}
ret += src.SubString(1,src.Length());
return ret;
}
|