我在窗体上放了很多控件,在执行Close语句时有时提示access violation,有时则不提示,查看了一下占用的内存,一点也没变少,有的时候则可以很好执行。连点击只有一个Close语句button时有时也提示错误,头大了!
//窗体调用代码
frmPrintSet:=TfrmPrintSet.Create(Self);
Try
   frmPrintSet.ShowModal;
Finally
   FreeAndNil(frmPrintSet);
End;
//窗体内部的控件
uses
  Windows, Messages,   Classes, Controls, Forms,SysUtils,
   StdCtrls, Buttons, Mask, DBCtrlsEh;type
  TfrmPrintSet = class(TForm)
    GroupBox3: TGroupBox;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    CStr3l: TDBNumberEditEh;
    CStr3r: TDBNumberEditEh;
    CStr3v: TCheckBox;
    CStr5l: TDBNumberEditEh;
    CStr5r: TDBNumberEditEh;
    CStr5v: TCheckBox;
    CStr7l: TDBNumberEditEh;
    CStr7r: TDBNumberEditEh;
    CStr7v: TCheckBox;
    CStr9l: TDBNumberEditEh;
    CStr9r: TDBNumberEditEh;
    CStr9v: TCheckBox;
    CStr11l: TDBNumberEditEh;
    CStr11r: TDBNumberEditEh;
    CStr11v: TCheckBox;
    CStr13l: TDBNumberEditEh;
    CStr13r: TDBNumberEditEh;
    CStr13v: TCheckBox;
    CStr1l: TDBNumberEditEh;
    CStr1r: TDBNumberEditEh;
    CStr1v: TCheckBox;
    CStr2v: TCheckBox;
    CStr2l: TDBNumberEditEh;
    CStr2r: TDBNumberEditEh;
    CStr4v: TCheckBox;
    CStr4r: TDBNumberEditEh;
    CStr4l: TDBNumberEditEh;
    CStr6l: TDBNumberEditEh;
    CStr6r: TDBNumberEditEh;
    CStr6v: TCheckBox;
    CStr8v: TCheckBox;
    CStr8r: TDBNumberEditEh;
    CStr8l: TDBNumberEditEh;
    CStr10l: TDBNumberEditEh;
    CStr10r: TDBNumberEditEh;
    CStr10v: TCheckBox;
    CStr12v: TCheckBox;
    CStr12r: TDBNumberEditEh;
    CStr12l: TDBNumberEditEh;
    CStr14l: TDBNumberEditEh;
    CStr14r: TDBNumberEditEh;
    CStr14v: TCheckBox;
    BitBtn1: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    CStr1w: TDBNumberEditEh;
    CStr3w: TDBNumberEditEh;
    CStr5w: TDBNumberEditEh;
    CStr7w: TDBNumberEditEh;
    CStr9w: TDBNumberEditEh;
    CStr11w: TDBNumberEditEh;
    CStr13w: TDBNumberEditEh;
    CStr2w: TDBNumberEditEh;
    CStr4w: TDBNumberEditEh;
    CStr6w: TDBNumberEditEh;
    CStr8w: TDBNumberEditEh;
    CStr10w: TDBNumberEditEh;
    CStr12w: TDBNumberEditEh;
    CStr14w: TDBNumberEditEh;
    Label6: TLabel;
    GroupBox1: TGroupBox;
    Label7: TLabel;
    DStr1l: TDBNumberEditEh;
    DStr1w: TDBNumberEditEh;
    DStr1v: TCheckBox;
    Label8: TLabel;
    DStr3l: TDBNumberEditEh;
    DStr3w: TDBNumberEditEh;
    DStr3v: TCheckBox;
    Label9: TLabel;
    DStr5l: TDBNumberEditEh;
    DStr5w: TDBNumberEditEh;
    DStr5v: TCheckBox;
    Label10: TLabel;
    DStr7l: TDBNumberEditEh;
    DStr7w: TDBNumberEditEh;
    DStr7v: TCheckBox;
    Label11: TLabel;
    DStr2l: TDBNumberEditEh;
    DStr2w: TDBNumberEditEh;
    DStr2v: TCheckBox;
    DStr4v: TCheckBox;
    DStr4w: TDBNumberEditEh;
    DStr4l: TDBNumberEditEh;
    Label12: TLabel;
    Label13: TLabel;
    DStr6l: TDBNumberEditEh;
    DStr6w: TDBNumberEditEh;
    DStr6v: TCheckBox;
    DStr8w: TDBNumberEditEh;
    DStr8l: TDBNumberEditEh;
    Label14: TLabel;
    DStr8v: TCheckBox;
    Label15: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label20: TLabel;
    BitBtn2: TBitBtn;
    EditCStr1: TEdit;
    Button1: TButton;
    Label16: TLabel;
    ComCStr1: TComboBox;
    Label19: TLabel;
    EditCStr3: TEdit;
    Button2: TButton;
    ComCStr3: TComboBox;
    EditCStr5: TEdit;
    Button3: TButton;
    ComCStr5: TComboBox;
    EditCStr7: TEdit;
    Button4: TButton;
    ComCStr7: TComboBox;
    EditCStr9: TEdit;
    Button5: TButton;
    ComCStr9: TComboBox;
    EditCStr11: TEdit;
    Button6: TButton;
    ComCStr11: TComboBox;
    EditCStr13: TEdit;
    Button7: TButton;
    ComCStr13: TComboBox;
    Label35: TLabel;
    Label36: TLabel;
    EditCStr2: TEdit;
    Button8: TButton;
    ComCStr2: TComboBox;
    ComCStr4: TComboBox;
    Button9: TButton;
    EditCStr4: TEdit;
    EditCStr6: TEdit;
    Button10: TButton;
    ComCStr6: TComboBox;
    ComCStr8: TComboBox;
    Button11: TButton;
    EditCStr8: TEdit;
    EditCStr10: TEdit;
    Button12: TButton;
    ComCStr10: TComboBox;
    ComCStr12: TComboBox;
    Button13: TButton;
    EditCStr12: TEdit;
    EditCStr14: TEdit;
    Button14: TButton;
    ComCStr14: TComboBox;
    EditDStr1: TEdit;
    Button15: TButton;
    ComDStr1: TComboBox;
    Label37: TLabel;
    Label38: TLabel;
    EditDStr3: TEdit;
    Button16: TButton;
    ComDStr3: TComboBox;
    EditDStr5: TEdit;
    Button17: TButton;
    ComDStr5: TComboBox;
    EditDStr7: TEdit;
    Button18: TButton;
    ComDStr7: TComboBox;
    EditDStr2: TEdit;
    Button19: TButton;
    ComDStr2: TComboBox;
    EditDStr4: TEdit;
    Button20: TButton;
    ComDStr4: TComboBox;
    EditDStr6: TEdit;
    Button21: TButton;
    ComDStr6: TComboBox;
    EditDStr8: TEdit;
    Button22: TButton;
    ComDStr8: TComboBox;
    Label39: TLabel;
    Label40: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button22Click(Sender: TObject);
  private
    { Private declarations }
  public
    //´æ·Å²ÎÊýÊǾ²Ì¬µÄ»¹ÊǶ¯Ì¬µÄÊý×é
    Static1:array[1..14] of integer;
    Static2:array[1..8] of integer;
    { Public declarations }
  end;

解决方案 »

  1.   

    但是为什么只一条Close语句就access violation呢?
      

  2.   

    access violation错误很著名了,你访问了没有初始化的变量或不存在的地址了,如果再没有其它代码的话,把frmPrintSet:=TfrmPrintSet.Create(Self);改为frmPrintSet:=TfrmPrintSet.Create(nil);试试
      

  3.   

    改为frmPrintSet:=TfrmPrintSet.Create(nil);在2k下OK了,98下偶尔会出现,胜利在望!
      

  4.   

    没有限制的
    如果你一个窗体放的太多,可以考虑把不直观的组件放到另一个form上
    然后在本窗体中调用
    这是小弟的愚见
      

  5.   

    应该不是内存的问题,512M该够用了,况且运行其他程序没出现这个错误,还好该成nil2k下Ok了