【问题标题】:Delphi 7 IDE Stack Overflow ErrorDelphi 7 IDE堆栈溢出错误
【发布时间】:2011-09-26 00:58:14
【问题描述】:

谁能告诉我,为什么我不断收到以下错误?

背景:

该项目有 320 个嵌入式表单。

项目搜索路径有 205 个文件夹,长度刚刚超过 11,000 个字符。

如果我只注释掉 1 个嵌入的表单单元,那么它编译时不会出错。

图像 #1 - 来自 Delphi IDE

图像 #2 - 来自 DCC32.EXE

这是我用于嵌入表单的单位

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 应该这样做。
  • @eyeClaxton - 一个狂野的镜头,但您可以尝试从您的使用条款中删除未使用的单位。 CnPack 有一个向导可以自动为您执行此操作。
  • @Lieven - 没有可移除的未使用单位我总是使用 Icarus。

标签: delphi ide delphi-7 stack-overflow


【解决方案1】:

您可以尝试使用 PE 编辑器来增加 IDE 或 dcc32 的堆栈大小。但请先备份! Editbin 应该可以解决问题。

【讨论】:

    【解决方案2】:

    尝试更改这些值:

    项目->选项->链接器->内存大小

    最小堆栈大小为十六进制值

    最大堆栈大小为十六进制值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 2019-02-16
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多