Delphi 7 IDE堆栈溢出错误
有谁能告诉我,为什么我总是犯以下错误 背景: 该项目有320个嵌入式表单 项目搜索路径有205个文件夹,长度略超过11000个字符 如果我只注释掉1个嵌入的表单单元,那么它编译时不会出错 图像#1-来自Delphi IDE 图像#2-来自DCC32.EXE 这是我用于嵌入表单的单元Delphi 7 IDE堆栈溢出错误,delphi,ide,delphi-7,stack-overflow,Delphi,Ide,Delphi 7,Stack Overflow,有谁能告诉我,为什么我总是犯以下错误 背景: 该项目有320个嵌入式表单 项目搜索路径有205个文件夹,长度略超过11000个字符 如果我只注释掉1个嵌入的表单单元,那么它编译时不会出错 图像#1-来自Delphi IDE 图像#2-来自DCC32.EXE 这是我用于嵌入表单的单元 unit EmbeddedForm; interface {$INCLUDE '..\INCLUDE\BUILD.INC'} uses Windows, Controls, Messages, Form
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.
您可以尝试使用PE编辑器来增加IDE或dcc32的堆栈大小。但是先做备份!Editbin应该可以做到这一点。尝试更改这些值: 项目->选项->链接器->内存大小 最小堆栈大小为十六进制值
最大堆栈大小为十六进制值您可以通过删除任何表单来抑制问题吗?是的,它不关心我删除的表单。您可以尝试使用PE编辑器来增加IDE或dcc32的堆栈大小。但是先做备份!Editbin应该这样做。@eyeClaxton-一个粗制滥造的例子,但您可以尝试从uses子句中删除未使用的单位。CnPack有一个向导可以自动为您执行此操作。@Lieven-没有要删除的未使用单位,我始终使用Icarus。