텍스트 파일을 파싱할려고 합니다.
파일하나가 18메가 정도 됩니다. 문자들로 꽉꽉차여있죠.
그 스트링중에서 엔터키를 친 갯수를 구할려고 이렇게 했습니다.
버튼을 눌르면
procedure TForm1.Button2Click(Sender: TObject);
var
happy : string;
ea : longint;
f : textfile;
begin
ea := 0;
if opendialog1.Execute then
begin
AssignFile(f,opendialog1.filename);
Reset(F);
Readln(F, happy);
while Pos(#10, happy) > 0 do
begin
happy[Pos(#10, happy)] := '^';
ea := ea+1;
end;
edit1.Text :=inttostr(ea);
end;
end;
보시다 시피 아주 간단한 건데.. 18메가짜리 텍스트화일이라서 그런지
실행시키면 거의 다운상태에 있습니다. 15분이 지나도..그냥 잠잠.
응답없슴. 상태로 돌변합니다.
무슨 방법이 없을까요? 하드웨어적인 사양은 충분합니다.(p4,384 ram)
아래 소스에다가 표현했습니다.
Application.ProcessMessages; 를 넣었죠...
기대하고 보셨다면 미안합니다.
쩝... 이상 허접 초보가....
그리고 첨부한 파일 중에 FastStrings.Pas 파일의
FastCharPos(const aSource: string; const C: Char; StartPos: Integer): Integer; 함수를 사용하시면 속도개선을 할 수 있을지도 모르겠습니다.
어셈블리 코드로 되어 있거든요.....
첨부한 파일은 여기 자료실에 찾은 겁니다. 그럼... 이만.. 꾸벅...즐프하세여
// 여기에다가
Application.ProcessMessages; // 요놈이 다른 프로그램들에게 일 할 시간을 넘겨주게 할거에요.... 쩝