Hi,
We have our big application contains lots of forms. I should tell a brief background of it. We have created a user-interface in Delphi 5 for Cobol applications. It is a single big DLL for GUI for our application. This DLL is using Transoft ODBC to connect to the database, and besides an Acuconnect tool is being used to enable the cobol program to work with GUI interface. I have built a process which has a loop to run some screens automatically by clicking appropriate buttons in the background while a form is stay on top tells the process progress. During this process, usually delphi generates an error "System out of resources." (EOutofResources) when it tries to open a requested screen. I have been reading here regarding this error, so I have tried some changes as well like not to autocreate forms, and also I think I release/free forms properly when they need to be closed. Anyway, during this error, I got another error like "Too many open files.". We are not using lots of bitmaps and graphic files. I have tried to reduce number of unnecessary controls from the form, but it did not help. Please anybody could give suggestions to resolve this issue. I tried replacing Free/Release method but it did not solve.
Following is a piece of code if it could help you to understand. This code is trying to open a screen (CurrentForm) which user requested. There is a parent Main form which is inherited by child screens, so every child screen has the standard built-in controls which are on the main form.
//Main Form close event which is inherited by every child form..
procedure TFORMFSI.FormClose(Sender:
TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
//------
//----Following Routine is defined in the application (project) which calls requested (child) screen which inherits the main form.
if CurrentForm <> nil then
begin
CurrentForm.Show;
if (PrvScreen <> nil) then //Last Screen which needs to be closed.
begin
PrvScreen.Close;
PrvScreen.Free;
PrvScreen:= nil;
end;
repeat
sleep(1);
Application.ProcessMessage
s;
until TFormFSI(CurrentForm).Clos
ed;
Thanks.
Gulberg
Start Free Trial