{I am having a bit of a problem in Pascal. I am writing a routine to copy Files. The Program is to be used in an area where anything at all can happen, so it has to be totally bullet-proof. All is well, except one little thing. Should the Program encounter a major disk error (for example, the user removes the disk While the copy is taking place), the Program breaks into Dos after an 'Abort, Retry, Fail' prompt. Now comes the weird part. This crash to Dos only occurs only once the Program terminates. It processes the error perfectly, and only gives the error once my entire Program is at an end! Following is the source code in question: } Program FileTest; Uses Dos; Procedure FileCopy(SrcPath, DstPath, FSpec : String; Var ExStat : Integer); Var DirInfo : SearchRec; Done : Boolean; Procedure Process(X : String); Var Source, Dest : File; Buffer : Array[1..4096] of Byte; ReadCnt, WriteCnt : Word; begin {$I-} ExStat:=0; Assign(Source,SrcPath+X); Reset(Source,1); If IOResult <> 0 then ExStat := 1; If ExStat = 0 then begin Assign(Dest,DstPath+X); ReWrite(Dest,1); If IOResult <> 0 then ExStat := 2; If ExStat = 0 then begin Repeat BlockRead(Source,Buffer,Sizeof(Buffer),ReadCnt); BlockWrite(Dest,Buffer,ReadCnt,WriteCnt); If IOResult <> 0 then ExStat := 3; Until (ReadCnt = 0) or (WriteCnt <> ReadCnt) or (ExStat <> 0); Close(Dest); end; Close(Source); end; {$I+} end; begin {$I-} ExStat := 0; FindFirst(SrcPath + FSpec, Archive, DirInfo); Done := False; While Not Done do begin Write('Copying ',DirInfo.Name,' '); Process(DirInfo.Name); If (ExStat = 0) then begin FindNext(DirInfo); If (DosError<>0) then Done := True; end else Done := True; end; {$I+} end; Procedure Main; Var ExC : Integer; begin FileCopy('C:\Dos\','A:\','*.BAS',ExC); Writeln('Exit Code:',ExC); end; begin Main; Writeln('Program is Complete'); end. { That's it. All errors get logged normally, and right after 'Program is Complete', I get an 'Abort, Retry, Fail'. It must be a File left open, and TP tries to close it once the Program terminates, but I can't imagine which File it might be! }