2
votes

Could anyone tell me, why I keep getting the following errors?

Background:

The project has 320 Embedded Forms.

The projects search path has 205 folders, at a length of just over 11,000 chars.

If I remark out just 1 of the embedded form units, then it compiles without an error.

IMAGE #1 - From Delphi IDE

enter image description here

IMAGE #2 - From DCC32.EXE

enter image description here

Here is the unit I use for my embedded forms

unit EmbeddedForm;

interface

{$INCLUDE '..\INCLUDE\BUILD.INC'}

uses
  Windows, Controls, Messages, Forms;

type
  TEmbeddedForm = class(TForm)
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    procedure StopFlicker(var theMessage: TWMEraseBkgnd); message WM_ERASEBKGND;
  protected
    { Protected declarations }
    procedure CreateParams(var Params: TCreateParams); override;
  public
    { Public declarations }
    procedure InitializeForm(); virtual; abstract;
    procedure FinalizeForm(); virtual; abstract;
  end;

implementation

{$R *.DFM}
procedure TEmbeddedForm.StopFlicker(var theMessage: TWMEraseBkgnd);
begin
  theMessage.Result := 1;
end;

procedure TEmbeddedForm.CreateParams(var Params: TCreateParams);
const
  ParamStyle = WS_VISIBLE or WS_POPUP or WS_OVERLAPPED or WS_OVERLAPPEDWINDOW;
begin
  inherited CreateParams(Params);
  Params.ExStyle := (Params.ExStyle and (not WS_EX_WINDOWEDGE)
    and (not WS_EX_STATICEDGE) and (not WS_EX_DLGMODALFRAME) and (not WS_EX_CLIENTEDGE));
  Params.Style := (Params.Style and (not WS_CAPTION) and (not DS_MODALFRAME)
    and (not WS_DLGFRAME) and (not WS_THICKFRAME));
  Params.Style := Params.Style and not ParamStyle;
end;

procedure TEmbeddedForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := False;
end;

procedure TEmbeddedForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caNone;
end;

end.
2
can you suppress the problem by removing any form?David Heffernan
Yes, It doesn't care what form I remove.eyeClaxton
you could try using a PE editor to increase stack size of IDE or dcc32. But make backups first! Editbin should do this.David Heffernan
@eyeClaxton - a wild shot but you could try removing unused units from your uses clause. CnPack has a wizard to do this automatically for you.Lieven Keersmaekers
@Lieven - No unused units to remove I always use Icarus.eyeClaxton

2 Answers

5
votes

You could try using a PE editor to increase the stack size of IDE or dcc32. But make backups first! Editbin should do the trick.

0
votes

Try to change these values:

Project->Options->Linker->Memory sizes

Min stack size as hex value

Max stack size as hex value