리스트박스에서 두개를 조합한 내용이 파일에 있으면 그것을 딴 파일에
입력할려고 하는데 제가 쓰는 방법은 너무나도 무식하고 속도상에 문제가
있어서....
고수님들은 이럴때 어떠한 방법을 쓰시는지.. 조언을 부탁드립니다.
For i := 0 To ColBox.Items.Count-1 Do
Begin
For j := 0 To Colbox.Items.Count-1 Do
Begin
AssignFile(TmpFile,fMainForm.sDataDir+fSim_Para.InLinEdt.Text) ;
ReSet(TmpFile);
While Not Eof(TmpFile) Do
Begin
Readln(TmpFile, Buf);//파일의 한라인을 읽어서
If Pos('|'+ColBox.Items.Strings[i]+'|'+ColBox.Items.Strings[j]+'|', Buf) > 1 Then //파일의 내용이 있으면
Begin
Writeln(LinFile,Buf); //따른 파일에 저장한다.
End;
End;
CloseFile(TmpFile);
End;
End;
CloseFile(LinFile);
아래처럼 바꾸어 보시면 될것같은데요.
(단, buf의 내용을 한번씩만 출력할 경우)
procedure uf_find_text;
var lb_find : boolean; // 현재 버퍼에서 해당 문자열을 찾았는지를 체크하는 스위치
begin
.
.
.
AssignFile(TmpFile,fMainForm.sDataDir+fSim_Para.InLinEdt.Text) ;
ReSet(TmpFile);
While Not Eof(TmpFile) Do
Begin
Readln(TmpFile, Buf);//파일의 한라인을 읽어서
lb_find := False;
For i := 0 To ColBox.Items.Count-1 Do
Begin
For j := 0 To Colbox.Items.Count-1 Do
Begin
If Pos('|'+ColBox.Items.Strings[i]+'|'+ColBox.Items.Strings[j]+'|', Buf) > 1 Then //파일의 내용이 있으면
Begin
lb_find := True;
break;
End;
End;
if lb_find then
begin
break;
end;
End;
if lb_find then
begin
Writeln(LinFile,Buf); //따른 파일에 저장한다.
end;
End;
CloseFile(TmpFile);
CloseFile(LinFile);
end;
호야 wrote:
> 리스트박스에서 두개를 조합한 내용이 파일에 있으면 그것을 딴 파일에
> 입력할려고 하는데 제가 쓰는 방법은 너무나도 무식하고 속도상에 문제가
> 있어서....
> 고수님들은 이럴때 어떠한 방법을 쓰시는지.. 조언을 부탁드립니다.
>
> For i := 0 To ColBox.Items.Count-1 Do
> Begin
> For j := 0 To Colbox.Items.Count-1 Do
> Begin
> AssignFile(TmpFile,fMainForm.sDataDir+fSim_Para.InLinEdt.Text) ;
> ReSet(TmpFile);
> While Not Eof(TmpFile) Do
> Begin
> Readln(TmpFile, Buf);//파일의 한라인을 읽어서
> If Pos('|'+ColBox.Items.Strings[i]+'|'+ColBox.Items.Strings[j]+'|', Buf) > 1 Then //파일의 내용이 있으면
> Begin
> Writeln(LinFile,Buf); //따른 파일에 저장한다.
> End;
> End;
> CloseFile(TmpFile);
> End;
> End;
> CloseFile(LinFile);