Q&A

  • 파일 오픈하고 닫은 후 다시 같은 파일 다시 오픈할때...
안녕하세요 ?

procedure TForm1.InitialBTClick(Sender: TObject);
var
    GridCol, GridRow : integer;
    F : TextFile;
begin
     for GridCol := 0 to StringGrid1.ColCount-1 do
      for GridRow := 1 to StringGrid1.RowCount-1 do
        StringGrid1.Cells[GridCol, GridRow] := '';
     StringGrid1.RowCount := 2;
     Memo1.Lines.Clear;
     FileListBox1.Clear;
     Learning_Check.Checked := False;
     Experiment_Check.Checked := False;
     ComboBox1.Text := '';
end;

procedure TForm1.SyncAllClick(Sender: TObject);
var
   Str_Line, Temp, Correct_String, ComboBox1_Name : String;
   IndexNum, File_Count, StartNum, x, y, y1, Status_x, Status_y  : Integer;
   Current_RowCount, Cut_String, GridCol, GridRow : integer;
   F : TextFile;
begin
   File_Count := 0;
   ComboBox1_Name := ComboBox1.Text;
   FileListBox1.Directory := '.\Learning\' + ComboBox1_Name;
   File_Count := FileListBox1.Count;

//File Open
   Status_x := 0;
   Status_y := 1;
   y1 := 1;
   Current_RowCount := StringGrid1.RowCount;

  For StartNum := 1 to File_Count do
  begin
   Assignfile(F, 'C:\MFPC\Learning\'+ ComboBox1.Text + '\' + IntToStr(StartNum));
   Reset(f);
   while (not eof(f)) do
     begin
          ReadLn(f, Str_Line);
          Memo1.Lines.Append(Str_Line);
     end;
   Closefile(f);

  For x := 1 to StringGrid1.ColCount - 1 do
   begin
    For y := y1 to StringGrid1.RowCount - 1 do
    begin
      StringGrid1.Cells[x,y] := Memo1.Lines.Strings[x-1];
      StringGrid1.Cells[Status_x, Status_y] := 'New';
      Inc(Status_y);
    end;
    StringGrid1.RowCount := Current_RowCount + 1;
   end;
   Memo1.Lines.Clear;
   Inc(y1);
  end;
end;

위와 같이 프로그램을 코딩하였습니다.
그런후 콤보박스에서 하나의 아이템을 선택합니다.
그러면 그 아이템이 디렉토리 이름이기때문에 그 디렉토리에 있는 파일들을 파일 리스트에 가지고옵니다.
그런후 파일을 하나씩 오픈해서 메모장에 쓰고 메모장의 특정열을 가지고와서 스트링그리드에다가 넣는 프로그램입니다.

실행을 시켜서 콤보박스에서 AAA라는 아이템(디렉토리명)을 선택합니다.
그런후 SyncAll 버튼을 클릭합니다.
정상적으로 값을 스트링그리드에 뿌려줍니다.
그런후 초기화를 위해 Initial 버튼을 누릅니다.
문제는 여기서 부터입니다. -.-
초기화 한후에 똑같이 콤보박스에서 AAA라는 아이템(디렉토리명)을 선택한 후 SyncAll 버튼을 누르면
Project Test.exe raised exception class EInOutError with message 'Invalid filename'. Process stopped. Use Step or Run to continue. 이와 같은 메세지가 뜨면서 오류가 납니다.
파일 열고 닫아줬는데 왜 이런 메세지가 뜨는지 모르겠습니다.

그럼 조언을 주십시요.

1  COMMENTS
  • Profile
    최용일 2004.04.27 23:23
    안녕하세요. 최용일입니다.

    흠... 파일명을 직접 확인해보세요... 그럼 뭐가 문제인지 알 수 있을거 같네요...


    For StartNum := 1 to File_Count do
    begin
        ShowMessage('C:\MFPC\Learning\'+ ComboBox1.Text + '\' + IntToStr(StartNum));
        Assignfile(F, 'C:\MFPC\Learning\'+ ComboBox1.Text + '\' + IntToStr(StartNum));

    ^^ 항상 즐코하세요...