김완용 님이 쓰신 글 :
:
: AssignFile(sFp, OpenDialog1.FileName);
: Reset(sFp);
:
: 이런 상태에서
: 다시 다른 파일을 열였을 때
: sFp로 지정한 파일이 이미 열려있으면 닫고 다시 열어야 하는데,
: 열려있는 파일인가 아닌가 알 수 없네요.
: 즉,
:
:
: private
: sFp : TextFile;
: .....
: procedure Form1.FormCreate(Sender: TObject);
: begin
: sFp := nil; // 파일이 열리지 않았음
: end;
:
: procedure.....
: begin
: if OpenDialog1.Execute then begin
: if sFp <> nil then CloseFile(sFp); // 사용 중이던 파일은 닫아 준다.
: AssignFile(sFp, OpenDialog1.FileName);
: Reset(sFp);
: end;
: end;
:
:
: 그런데
: sFp := nil;
: 여기서부텀 에러가 납니다.
: 그러니 if sFp <> nil then CloseFile(sFp); 이것도 에러가 납니다.
: 파일이 열려있는 지 알 수 있는 방법이 없나요?
: 고수님들의 조언을 부탁 드려 봅니다.
안녕하세요. 까막입니다.
외부에서가 아닌 프로그램 안에서 열었나 하는 것을 판단하시는 것이죠?
FileOpen 으로 여시면서 열기 속성을 지정해 주시면 간단히 될것 같은데요.
procedure TForm1.Button3Click(Sender: TObject);
var
FH : integer;
begin
FH := FileOpen('c:\temp\a.txt',fmOpenWrite or fmShareExclusive);
if FH > 0 then
Edit1.Text := 'Success'
else
Edit1.Text := 'Error';
end;
위에서 fmShareExclusive 속성을 주시면 자기 혼자만이 열어서 사용하겠다는 의미가 됩니다.
자세한 내용은 도움말에서 FileOpen 과 File Open Mode 를 찾아보시면 나오고요.
혼이 살아 있을까.... 대한민국.
|