돌아다니다 발견한..볼랜드 씨 소스 입니다...이걸 델파이에서 써야 하는데 도대체 어떻게 해야 할지를 모르고 있습니다..가르쳐 주세요....ㅜ.ㅜ
String __fastcall TMain::StringToUnicode(String stString)
{
int itWideSize = stString.WideCharBufSize();
wchar_t *wcSource = new wchar_t[itWideSize];
String stResult;
wcSource = stString.WideChar(wcSource, itWideSize);
int itMultiSize = WideCharToMultiByte(CP_UTF8, 0, wcSource, itWideSize, NULL, 0, NULL, NULL);
char *chTarget = new char[itMultiSize];
WideCharToMultiByte(CP_UTF8, 0, wcSource, itWideSize, chTarget, itMultiSize, NULL, NULL);
stResult = chTarget;
delete [] chTarget;
delete [] wcSource;
return(stResult);
}
//---------------------------------------------------------------------------
String __fastcall TMain::UnicodeToString(String stString)
{
int itWideSize = MultiByteToWideChar(CP_UTF8, 0, stString.c_str(), stString.Length() + 1, NULL, 0);
wchar_t *wcTarget = new wchar_t[itWideSize];
String stResult;
MultiByteToWideChar(CP_UTF8, 0, stString.c_str(), stString.Length() + 1, wcTarget, itWideSize);
stResult = wcTarget;
stResult = StringReplace(stResult.Trim(), "%20", " ");
delete [] wcTarget;
return(stResult);
}
Function TForm1.UnicodeToString(Str : String) : String;
Var
wszTemp: array[0..512] of WCHAR;
tarket: String;
Begin
MultiByteToWideChar(CP_UTF8,0,PChar(Str),-1,wszTemp,256);
tarket := WideCharToString(wszTemp);
End;
근데 스트링을 유니코드로 바꾸는건 에러가 나서 안됩니다...
FunCtion Tform1.StringToUnicode(Str : String) : String;
Var
wszTEmp: Array[0..512] OF WCHAR;
scr: PCHAR;
tarket: String;
Begin
Tarket := StringToWideChar(STR,wsztemp,256); // 일단 와이드로 바꾸고...
Scr := PCHAR(Tarket);
WideCharToMultiByte(CP_ACP,0, wszTemp, -1, Scr, 2, NULL, NULL);
~~~~ 요기가
에러나서 컴파일 안됩니다....머가 문제가 있는건가여..????
Incompatible types: 'Variant' and 'PChar' <= 에러 메세지...
End;
위에 같이 올렸던 볼랜드 씨 소스를 고대로 베껴도 안되는 이유가 멀까요...ㅜ.ㅜ
제발 도와 주세여....
델파이 5 버젼입니다....