PRB: Error: Too Many Files Open
This article was previously published under Q148643
This article has been archived. It is offered "as is" and will no longer be updated.
You may receive the following error if Visual FoxPro reaches its filehandle limit of 255:
Program ErrorThis error can occur when you are close to the limit of 255 files beingopened. The maximum number of files that can be opened in Visual FoxPro is255, but the error can occur before 255 because Visual FoxPro opens certainfiles upon startup that use some of the file handles.
Too many files open.
Too many files open.
To prevent the error from occurring, do not open that many files. If thenumber of files that are being opened is close to the 255 file limit, openand close files as necessary. To track how many files are open at any giventime, create a variable that can store the number of files that alreadyhave been opened. For example, if you are opening a database container andone table that has a memo field and an index, 6 files have been opened atthis time. They are the DBC, DCT, and DCX files of the database container,and the DBF, CDX, and FPT files of the table. By adding and subtracting thenumber of files that are opened and closed to the variable each time, youcan evaluate when to close any database containers and tables that are notin use so the error will not occur.
NOTE: This error does not occur as quickly in Visual FoxPro 5.0 because ithas been designed to open as many files as the operating system allowsinstead of the 255 file limit currently in Visual FoxPro 3.0.
This behavior is by design. Visual FoxPro 3.0 can only open a maximum of255 files.
Steps to Reproduce BehaviorRun the following code sample to demonstrate this behavior:
When you run this code in a program (.prg) file, watch the Wait Window.Note that the number count stops and the error occurs around 245 to 250.The exact number in the display (Wait window) may be different depending onhow many files Visual FoxPro has open when you run the code sample.
FOR i = 1 TO 255 = INKEY(.001) && Gives create cursor time to keep up SELECT (i) CREATE CURSOR ("T" + SUBSTR(SYS(2015), 3, 7)) (xyz c(10)) WAIT WINDOW STR(i) + STR(SELECT()) NOWAIT NEXT
Article ID: 148643 - Last Review: 02/24/2014 08:24:20 - Revision: 3.1
Microsoft Visual FoxPro 3.0 Standard Edition, Microsoft Visual FoxPro 3.0b Standard Edition
- kbnosurvey kbarchive kberrmsg KB148643