mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-12 22:49:34 +02:00
79 lines
1.9 KiB
ObjectPascal
79 lines
1.9 KiB
ObjectPascal
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.
|