Q&A

  • richedit...속도 좀...ㅡㅜ
안녕하세요...
제 나름대로 열심히 메모장 비스무리~한걸 하나 만들고 있습니다.
richedit를 썼는데...속도가 영~아니었습니다.
나름대로 이리 맞춰보고 저리 맞춰보고 해도...영~
님들이 한번 보시고 조언 좀 해주세요...

제가 하고자 하는거는...
abcd     (빈칸들.........................)
agho     (빈칸들.........................)
.
.
(계속~)
이런 text파일이 있을 때....이걸 abcdagho~로 바꾸고 싶습니다.
그래서 제가 선택한 방법은 라인별로 읽어서 빈칸은 빼고..4칸씩 카피해서 이어 붙이기를 했습니다.
근데 라인수가 얼마안될때는 별 상관이 없는데...2000줄 쯤씩 되니까 속도가 너무 느려졌습니다.
참고로 글은...예는 저렇게 해 놨지만...80으로 고정되어 있구여..빈칸들도 171칸으로 고정 되어 있습니다.(라인수는 유동~)
님들~이 작업을 빠르게 처리하려면 어떻게 하는게 좋을까요~?
조언 부탁드립니다.

=================================================
아래는...제가 나름대로 잔머리 굴려서 짠 소스 입니다.
=================================================
procedure TFStat.LineReject;
var
  File1, Temp1, S : String;
  Temp2 : TextFile;
  I, npos, num  : Integer;
begin
  File1 := 'C:BayplanSEdit.XXX';

  AssignFile(Temp2,File1);
  ReWrite(Temp2);          //초기화

  Temp1 := '';
  num := mainform.RichEdit1.Lines.Count;

  Gauge1.MinValue := 0;
  Gauge1.MaxValue := num;
  Gauge1.Progress := 0;

  for I := 1 to num do Begin
    temp1 := mainform.RichEdit1.Lines[i];
    nPos := Pos(temp1, mainform.richedit1.text);
    Temp1 := Copy(mainform.richedit1.text, nPos, 80) ;

    if I = num-1 then begin
    Temp1 := TRIM(Temp1);
    end;

    Write(Temp2, Temp1);
    Gauge1.Progress := Gauge1.Progress + 1;
  end;
  CloseFile(Temp2);

  mainform.richedit1.clear;
  if FileExists(File1)=TRUE then begin
     Assignfile(Temp2,File1);
     Reset(Temp2);
    while not Eof(Temp2) do begin
       Readln(Temp2, S);
       MainForm.RichEdit1.lines.add(S);
     end;
     closefile(Temp2);
  end;

  Gauge1.Progress := 0;
  close;

end;
0  COMMENTS