Я могу только посоветовать вам использовать более «современные» средства для работы с файлами. Я не знаю, существует ли ограничение количества открытых файлов с помощью Windows API, но я только что проверил и смог легко открыть 1000 потоков параллельно:
procedure TForm1.Button1Click(Sender: TObject);
var
Strs: TList;
i: integer;
begin
Strs := TList.Create;
try
for i := 1 to 1000 do begin
Strs.Add(TFileStream.Create('D:\foo.txt', fmOpenRead or fmShareDenyWrite));
end;
finally
FreeObjectList(Strs);
end;
end;
Я никогда не понимал, почему люди все еще используют нетипизированные файлы вместо TStream и его потомков в новом коде.
Редактировать: В своем комментарии вы пишете, что хотите читать только текстовые файлы - если это так, просто создайте TStringList и используйте его LoadFromFile () способ.