|
아래의 프로그램은 2개의 리치에디터중
EditIn의 Lines의 값을 EditOut Lines에 코드값으로 표시하는 프로그램입니다.
예를 들면 아래와 같구요...
EditIn EditOut
가나다라마바 {0x??,0x??,0x?? ....,0x00),
123456 {0x31,0x32,0x33 ....,0x00},
그런데, 방법1을 사용하면 코드값이 이상하고,
방법2를 사용하면 정상적으로 실행됩니다.
제가 생각할 때는 방법1을 사용해도 문제가 없어야 할 것 같은데...
아무리 고민해도 왜 문제가 되는지 모르겠습니다.
한 수 가르침 부탁드리겠습니다.
오늘도 즐거운 하루되세요~
void __fastcall ThreadChange::Execute()
{
//---- Place thread code here ----
int line,i,j,len;
unsigned char *ch;
AnsiString target,etarget,str;
FormMain->EditOut->Clear();
line = FormMain->EditIn->Lines->Count;
for(i=0 ; i<line ; i++)
{
/* 방법1
ch = FormMain->EditIn->Lines->Strings[i].c_str();
len = FormMain->EditIn->Lines->Strings[i].Length();
*/
// 방법2 ->
str = FormMain->EditIn->Lines->Strings[i];
ch = str.c_str();
len = str.Length();
// <- 방법2
etarget = "{";
for(j=0; j<len; j++)
{
target = "0x" + target.sprintf("%02X",*ch++) + ",";
etarget = etarget + target;
}
etarget = etarget + "0x00}, //" + IntToStr(i) + "\r\n";
FormMain->EditOut->Lines->Strings[i] = etarget;
FormMain->EditOutForcus();
}
FormMain->EditOutForcus();
}
|