我正在使用Rad Studio XE7制作多设备应用程序。 有时当我想在表单上保存我的最后修改时,Rad Studio会引发异常"参数超出范围"但是没有给我任何关于问题所在的信息。 详细的错误报告:
[067B425F]{fmx210.bpl } FMX.Types.{System.Generics.Collections}TList.SetCapacity (Line 737, "System.Generics.Collections.pas" + 1) + $1 [067B1703]{fmx210.bpl } FMX.Types.RegisterShortCuts (Line 7266, "FMX.Types.pas" + 23) + $7 [067448C7]{fmx210.bpl } FMX.Styles..TStyleReader (Line 351, "FMX.Styles.pas" + 0) + $132E [067448D6]{fmx210.bpl } FMX.Styles.TStyleReader.SetName (Line 368, "FMX.Styles.pas" + 0) + $2 [067449CE]{fmx210.bpl } FMX.Styles.TStyleStreaming.SameStyle (Line 404, "FMX.Styles.pas" + 1) + $17 [067177F4]{fmx210.bpl } FMX.Controls.DoWrite (Line 5896, "FMX.Controls.pas" + 2) + $C [06717847]{fmx210.bpl } FMX.Controls.TStyleBook.DefineProperties (Line 5902, "FMX.Controls.pas" + 0) + $B [50161682]{rtl210.bpl } System.Classes.TWriter.WriteProperties (Line 11571, "System.Classes.pas" + 19) + $8 [50160EE9]{rtl210.bpl } System.Classes.TWriter.WriteData (Line 11381, "System.Classes.pas" + 30) + $6 [5016C1F3]{rtl210.bpl } System.Classes.TComponent.WriteState (Line 15547, "System.Classes.pas" + 0) + $3 [50160CBF]{rtl210.bpl } System.Classes.TWriter.WriteComponent (Line 11333, "System.Classes.pas" + 18) + $8 [067A8F01]{fmx210.bpl } FMX.Types.TFmxObject.GetChildren (Line 4750, "FMX.Types.pas" + 7) + $17 [06760403]{fmx210.bpl } FMX.Forms.TCommonCustomForm.Notification (Line 3567, "FMX.Forms.pas" + 1) + $1 [5005F532]{rtl210.bpl } System.@CallDynaInst (Line 16299, "System.pas" + 4) + $0 [50160FFA]{rtl210.bpl } System.Classes.TWriter.WriteData (Line 11403, "System.Classes.pas" + 52) + $16 [5016C1F3]{rtl210.bpl } System.Classes.TComponent.WriteState (Line 15547, "System.Classes.pas" + 0) + $3 [50160CBF]{rtl210.bpl } System.Classes.TWriter.WriteComponent (Line 11333, "System.Classes.pas" + 18) + $8 [5016114E]{rtl210.bpl } System.Classes.TWriter.WriteDescendent (Line 11431, "System.Classes.pas" + 8) + $4 [211357A3]{designide210.bpl} ComponentDesigner.WriteStream (Line 4184, "ComponentDesigner.pas" + 11) + $7 [21135870]{designide210.bpl} ComponentDesigner.TComponentRoot.WriteRootStream (Line 4207, "ComponentDesigner.pas" + 5) + $B [21132540]{designide210.bpl} ComponentDesigner.TComponentRoot.GetRootStream (Line 2936, "ComponentDesigner.pas" + 14) + $5 [211388F6]{designide210.bpl} ComponentDesigner.TComponentRoot.Save (Line 5194, "ComponentDesigner.pas" + 1) + $2 [211389BE]{designide210.bpl} ComponentDesigner.TComponentRoot.Save (Line 5208, "ComponentDesigner.pas" + 15) + $12 [21D7CF56]{delphicoreide210.bpl} DelphiModule.TPascalCodeMgrModHandler.SaveFile (Line 1589, "DelphiModule.pas" + 2) + $8 [206A6F84]{coreide210.bpl} SourceModule.TCodeISourceModule.SaveFile (Line 1514, "SourceModule.pas" + 2) + $22 [206A4604]{coreide210.bpl} SourceModule.TSourceModule.SaveFile (Line 656, "SourceModule.pas" + 3) + $1F [2087C1AC]{coreide210.bpl} DocModul.TDocModule.TheMalteseFalcon (Line 1438, "DocModul.pas" + 60) + $2 [500F11ED]{rtl210.bpl } System.Rtti.RawInvoke (Line 7090, "System.Rtti.pas" + 46) + $0 [500F15DF]{rtl210.bpl } System.Rtti.Invoke (Line 7289, "System.Rtti.pas" + 57) + $6 [500E7BBA]{rtl210.bpl } System.Rtti.TRttiInstanceMethodEx.DispatchInvoke (Line 5409, "System.Rtti.pas" + 101) + $20 [500F1A74]{rtl210.bpl } System.Rtti.TRttiMethod.Invoke (Line 7980, "System.Rtti.pas" + 1) + $11 [2087BE24]{coreide210.bpl} DocModul.TDocModule.Save (Line 1362, "DocModul.pas" + 3) + $22 [206A5731]{coreide210.bpl} SourceModule.TSourceModule.Save (Line 1005, "SourceModule.pas" + 13) + $7 [20880E20]{coreide210.bpl} DocModul.SaveModifiedModules (Line 3584, "DocModul.pas" + 57) + $3 [0041FEA5]{bds.exe } AppMain.{System.Generics.Collections}TList.IndexOf (Line 1151, "System.Generics.Collections.pas" + 0) + $1 [5016D523]{rtl210.bpl } System.Classes.TBasicAction.Execute (Line 16099, "System.Classes.pas" + 3) + $7 [505AC25A]{vcl210.bpl } Vcl.ActnList.TCustomAction.Execute (Line 259, "Vcl.ActnList.pas" + 19) + $35 [5016D3A7]{rtl210.bpl } System.Classes.TBasicActionLink.Execute (Line 16010, "System.Classes.pas" + 2) + $7 [505C316C]{vcl210.bpl } Vcl.Controls.TControl.Click (Line 7346, "Vcl.Controls.pas" + 7) + $7 [5063F950]{vcl210.bpl } Vcl.ComCtrls.TToolButton.Click (Line 21481, "Vcl.ComCtrls.pas" + 0) + $0 [505C3631]{vcl210.bpl } Vcl.Controls.TControl.WMLButtonUp (Line 7487, "Vcl.Controls.pas" + 7) + $6 [505C2C15]{vcl210.bpl } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6 [5016E218]{rtl210.bpl } System.Classes.StdWndProc (Line 16600, "System.Classes.pas" + 8) + $0 [505C2850]{vcl210.bpl } Vcl.Controls.TControl.Perform (Line 7010, "Vcl.Controls.pas" + 10) + $8 [505C6E12]{vcl210.bpl } Vcl.Controls.GetControlAtPos (Line 9773, "Vcl.Controls.pas" + 4) + $75 [505C6EDA]{vcl210.bpl } Vcl.Controls.TWinControl.ControlAtPos (Line 9796, "Vcl.Controls.pas" + 13) + $E [505C2850]{vcl210.bpl } Vcl.Controls.TControl.Perform (Line 7010, "Vcl.Controls.pas" + 10) + $8 [505C6FA8]{vcl210.bpl } Vcl.Controls.TWinControl.IsControlMouseMsg (Line 9820, "Vcl.Controls.pas" + 15) + $29 [505C755E]{vcl210.bpl } Vcl.Controls.TWinControl.WndProc (Line 9989, "Vcl.Controls.pas" + 104) + $6 [50641A65]{vcl210.bpl } Vcl.ComCtrls.TToolBar.UpdateButtonState (Line 22759, "Vcl.ComCtrls.pas" + 11) + $27 [50641AA6]{vcl210.bpl } Vcl.ComCtrls.TToolBar.UpdateButtonStates (Line 22770, "Vcl.ComCtrls.pas" + 3) + $4 [50644444]{vcl210.bpl } Vcl.ComCtrls.TToolBar.WndProc (Line 24345, "Vcl.ComCtrls.pas" + 104) + $6 [505C6D1C]{vcl210.bpl } Vcl.Controls.TWinControl.MainWndProc (Line 9750, "Vcl.Controls.pas" + 3) + $6 [5016E218]{rtl210.bpl } System.Classes.StdWndProc (Line 16600, "System.Classes.pas" + 8) + $0 [507176C9]{vcl210.bpl } Vcl.Forms.TApplication.CancelHint (Line 11181, "Vcl.Forms.pas" + 6) + $D [5071635B]{vcl210.bpl } Vcl.Forms.TApplication.ProcessMessage (Line 10352, "Vcl.Forms.pas" + 23) + $1 [5071639E]{vcl210.bpl } Vcl.Forms.TApplication.HandleMessage (Line 10382, "Vcl.Forms.pas" + 1) + $4 [507166D1]{vcl210.bpl } Vcl.Forms.TApplication.Run (Line 10520, "Vcl.Forms.pas" + 26) + $3
我认为问题出在StyleBook组件中,我已经定义了一些设计,因此某些参数只能由它们修改。 令人沮丧的是,商业软件至少没有机会绕过这个问题。我很难理解什么不该做。