Q&A

  • 이런 무식한 방법말고 어디 유식한 방법없나요?
리스트박스에서 두개를 조합한 내용이 파일에 있으면 그것을 딴 파일에

입력할려고 하는데 제가 쓰는 방법은 너무나도 무식하고 속도상에 문제가

있어서....

고수님들은 이럴때 어떠한 방법을 쓰시는지.. 조언을 부탁드립니다.



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);

1  COMMENTS
  • Profile
    양우 2000.10.24 04:02


    아래처럼 바꾸어 보시면 될것같은데요.

    (단, 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);