Q&A

  • RichEdit에서 빠른 검색하기
TRichEdit을 이용하여 간단한 에디터를 만들고 있습니다. 그런데 문자열 찾기 기능을 추가하려고 하니 문제가 조금 생겨 질문드립니다.



보통 문자열 찾기를 구현하기 위해서는 간단히 FindDlalog component를 붙입니다. 그러나 이 FindDlalog component로는 기능이 부족하여 폼에다가 에디트 박스와 체크박스등을 붙인 새로운 FindDialog를 만들고 싶습니다.



그리고 for문을 사용하여 RichEdit.lines의 각 라인단위로 읽어들여 검색하고자 하는 문자열과 Pos를 이용하여 검색하는 방법을 사용하였더니 엄청 느리더군요.(입력텍스트화일이 3~4M정도 됩니다)



다른 방법으로 for문을 이용하지 않고 무식하게(?) Pos(검색문자열, RichEdit1.text)와 같이 RichEdit에 뿌려진 전체 화일에서 문자열을 찾는 경우 상당한 속도향상을 보였습니다만 아쉽게도 Pos 함수가 longint가 아니라 int를 넘겨주는 함수라 특정위치를 넘어서 나타나는 문자열은 검색하지 못하더군요.



RichEdit의 findtext는 어떻게 그렇게 빨리(물론 더 빨랐으면 하지만)검색을 하는지 궁금하네요. RichEdit의 findtext와 비슷한 속도를 갖도록 함수를 구현하는 방법을 아시는 분이나 아니면 RichEdit.findText가 찾기를 할때 다른 기능(예를 들면 와일드카드등을 지원한다든가, autoexec.*와 같이....)을 하도록 하는 방법이 있으면 알려주셨으면 합니다.



0  COMMENTS