Delphi 7 IDE Ошибка переполнения стека - PullRequest
2 голосов
/ 26 сентября 2011

Может кто-нибудь сказать мне, почему я продолжаю получать следующие ошибки?

Справочная информация:

В проекте имеется 320 встроенных форм.

Путь поиска проектов содержит 205 папок, длина которых составляет чуть более 11 000 символов.

Если я выделю только 1 из встроенных блоков формы, он будет скомпилирован без ошибки.

ИЗОБРАЖЕНИЕ № 1 - Из Delphi IDE

enter image description here

ИЗОБРАЖЕНИЕ № 2 - Из DCC32.EXE

enter image description here

Вот единица, которую я использую для своих встроенных форм

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 ]

5 голосов
/ 26 сентября 2011

Вы можете попробовать использовать редактор PE, чтобы увеличить размер стека IDE или dcc32.Но сначала сделайте резервные копии!Editbin должен сделать трюк.

0 голосов
/ 27 сентября 2011

Попробуйте изменить эти значения:

Project-> Options-> Linker-> Размеры памяти

Минимальный размер стека в шестнадцатеричном виде

Максимальный размер стека в шестнадцатеричном

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...