123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- program test_open_files;
- const
- MaxOpenTest = 150;
- var
- f : array [1..MaxOpenTest] of text;
- i,count : longint;
- error : word;
- s : string;
- storeexit : pointer;
- Max : longint;
- procedure Errorexit;
- begin
- exitproc:=storeexit;
- if errorcode=4 then
- begin
- if count<=15 then
- begin
- Writeln('The program could not open more than 15 files !');
- Writeln('Retry after addition of the following line to config.sys file');
- Writeln('FILES=60');
- Writeln('If it still does not work after this change');
- Writeln('you probably use a too old RTL version');
- Writeln('that does not support more than 15 files');
- Writeln('open at the same time');
- end
- else
- begin
- Writeln('The program was able to open ',count,' files simultaneously');
- Writeln('If you need to be able to have more opened files');
- Writeln('Try to increase the FILES=XX value in config.sys file');
- { This is not a RTL error anymore
- as we increased the size over the ordinary 15 limit }
- erroraddr:=nil;
- errorcode:=0;
- exitcode:=0;
- end;
- { close all left open files }
- for i:=count downto 1 do
- begin
- close(f[i]);
- erase(f[i]);
- end;
- end;
- end;
- begin
- StoreExit:=exitproc;
- ExitProc:=@ErrorExit;
- Max:=MaxOpenTest;
- if paramcount>0 then
- begin
- val(paramstr(1),count,error);
- if error = 0 then
- Max:=count;
- count:=0;
- end;
- for i:=1 to Max do
- begin
- str(i,s);
- s:='file'+s+'.tmp';
- assign(f[i],s);
- rewrite(f[i]);
- count:=i;
- Writeln(f[i],'This is file ',i);
- Writeln(i,' files open');
- { no closing so they are finally all open }
- end;
- for i:=Max downto 1 do
- begin
- close(f[i]);
- erase(f[i]);
- end;
- end.
|