|
원래 TStrings에서 Text는 호출될 때 마다 각 라인에 대한 조립이 이루어집니다.
그런식의 호출은 1시간이 넘게 걸려도 이상할게 없죠.
TStrings로 직접 처리하시려면 Line별로 접근해서 직접 "\n"을 붙이는 방법을 쓰세요.
해 보진 않았지만 다음과 같이 처리하시면 될겁니다.
void __fastcall MakeText(TStrings *Source, String &Target)
{
Target = ""; // 초기화
int nCount = Source->Count;
String sLine;
for (int ii = 0; ii < nCount; ii++)
{
sLine = Source->Strings[ii] + "\n";
Target += sLine;
// 이 두 라인 어설프게 합치지 마세요. 속도가 어마어마하게 느려질 수 있습니다.
}
}
개발자 님이 쓰신 글 :
: 안녕하세요.
:
: TStrings안에 구분자로 \r\n을 사용하는데 \r때문에 제 프로그램에 문제가
: 생기고 있습니다.
: TRichEdit에서
: Edit1->Lines->operator[]()함수를 사용하면 \r을 제거할수 있으나
: 제가 쓰는 Line이 50만 line정도 되다 보니 1시간 이상이 걸리더군요.
: 그래서 Edit1->Text에서 직접 \r을 제거 하도록 했는데
: 1만 라인에서 약 7초가 소요되어서 문제가 심각하거든요.
: 혹시 아시면 분 있으면 알려주시기 바랍니다.
:
: 쉽게 말하면 Return키 취급방식을 PC에서 Unix알고리즘으로 고속으로 바꾸는 방법을 알려주시면
: 되거든요.
:
: 미리 감사드립니다.
:
:
:
:
|