gpt4 book ai didi

delphi - 当我在表单上放置 TidSMTP 时出现访问冲突

转载 作者:行者123 更新时间:2023-12-02 10:32:42 31 4
gpt4 key购买 nike

我在使用 Delphi XE4 时遇到问题:当我在表单上放置 TIdSmtp 或 TIsSSLIOHandlerSocketOpenSSL 时,我收到此错误:

[511EDABF]{IndySystem180.bpl} IdStack.TIdStack.IncUsage (Line 688, "IdStack.pas" + 11) + $7
[511EEBB2]{IndySystem180.bpl} IdComponent.TIdComponent.InitComponent (Line 229, "IdComponent.pas" + 1) + $5
[50EE84A2]{IndyCore180.bpl} IdTCPConnection.TIdTCPConnection.InitComponent (Line 912, "IdTCPConnection.pas" + 1) + $2
[50EE0D99]{IndyCore180.bpl} IdTCPClient.TIdTCPClientCustom.InitComponent (Line 256, "IdTCPClient.pas" + 1) + $2
[50FC53D5]{IndyProtocols180.bpl} IdExplicitTLSClientServerBase.TIdExplicitTLSClient.InitComponent (Line 262, "IdExplicitTLSClientServerBase.pas" + 1) + $2
[50FC8E5D]{IndyProtocols180.bpl} IdMessageClient.TIdMessageClient.InitComponent (Line 643, "IdMessageClient.pas" + 1) + $2
[510B9AF9]{IndyProtocols180.bpl} IdSMTPBase.TIdSMTPBase.InitComponent (Line 193, "IdSMTPBase.pas" + 1) + $2
[510BB47D]{IndyProtocols180.bpl} IdSMTP.TIdSMTP.InitComponent (Line 383, "IdSMTP.pas" + 1) + $2
[511CF547]{IndySystem180.bpl} IdBaseComponent.TIdInitializerComponent.Create (Line 186, "IdBaseComponent.pas" + 4) + $4
[21D64B2B]{delphicoreide180.bpl} CompPalMgr.TComponentPalettePageItemDelegate.CreateComponent (Line 2756, "CompPalMgr.pas" + 2) + $7
[2113FFAB]{designide180.bpl} ComponentDesigner.TComponentRoot.DoCreateComponent (Line 2359, "ComponentDesigner.pas" + 12) + $17
[21145796]{designide180.bpl} ComponentDesigner.TComponentRoot.CreateCurrentComponent (Line 4450, "ComponentDesigner.pas" + 2) + $32
[2115DBAA]{designide180.bpl} Surface.TDesignSurface.CreateItem (Line 195, "Surface.pas" + 1) + $11
[2111193A]{designide180.bpl} Designer.TDesigner.DoDragCreate (Line 794, "Designer.pas" + 1) + $F
[211121E8]{designide180.bpl} Designer.TDesigner.DragEnd (Line 974, "Designer.pas" + 19) + $3
[21114880]{designide180.bpl} Designer.TDesigner.MouseUp (Line 1763, "Designer.pas" + 1) + $2
[51FEEE82]{vcldesigner180.bpl} VCLSurface.MouseEvent (Line 3187, "VCLSurface.pas" + 45) + $11
[5005F7EB]{rtl180.bpl } System.TMonitor.Exit (Line 16933, "System.pas" + 2) + $7
[51FEFA6F]{vcldesigner180.bpl} VCLSurface.TVclDesignSurface.IsDesignMsg (Line 3448, "VCLSurface.pas" + 48) + $6
[50582B07]{vcl180.bpl } Vcl.Forms.TApplication.DispatchAction (Line 11494, "Vcl.Forms.pas" + 9) + $C
[0B6A7E30]{IDEFixPack.dll} VCLDesignerGuideLinesHideFix.IsDesignMsg + $94
[5045287F]{vcl180.bpl } Vcl.Controls.TControl.WndProc (Line 7137, "Vcl.Controls.pas" + 4) + $21
[50170090]{rtl180.bpl } System.Classes.StdWndProc (Line 16860, "System.Classes.pas" + 8) + $0
[50456DEB]{vcl180.bpl } Vcl.Controls.TWinControl.IsControlMouseMsg (Line 9807, "Vcl.Controls.pas" + 1) + $9
[504575B5]{vcl180.bpl } Vcl.Controls.TWinControl.WndProc (Line 10039, "Vcl.Controls.pas" + 153) + $6
[505777F9]{vcl180.bpl } Vcl.Forms.TCustomForm.WndProc (Line 4388, "Vcl.Forms.pas" + 201) + $5
[51FF84BF]{vcldesigner180.bpl} VCLFormContainer.TControlSizer.ControlWndProc (Line 311, "VCLFormContainer.pas" + 33) + $C
[50456BF8]{vcl180.bpl } Vcl.Controls.TWinControl.MainWndProc (Line 9751, "Vcl.Controls.pas" + 3) + $6
[50170090]{rtl180.bpl } System.Classes.StdWndProc (Line 16860, "System.Classes.pas" + 8) + $0
[50582213]{vcl180.bpl } Vcl.Forms.TApplication.CancelHint (Line 11117, "Vcl.Forms.pas" + 6) + $E
[50580E87]{vcl180.bpl } Vcl.Forms.TApplication.ProcessMessage (Line 10288, "Vcl.Forms.pas" + 23) + $1
[50580ECA]{vcl180.bpl } Vcl.Forms.TApplication.HandleMessage (Line 10318, "Vcl.Forms.pas" + 1) + $4
[50581205]{vcl180.bpl } Vcl.Forms.TApplication.Run (Line 10456, "Vcl.Forms.pas" + 26) + $3

有人可以帮助我吗?

与 IdUserPassProvider 或 IdSASLPlain 等其他组件一起工作正常。

问候

最佳答案

如果不看到实际的错误消息,就很难诊断您的问题。它是实际的 EAccessViolation 异常,还是不同类型的异常?仅仅因为引发异常并不能保证它实际上是 EAccessViolation ,除非它确实是访问冲突。

TIdStack.IncUsage() 确保 Indy 的全局 GStack 对象存在。该对象提供对 Idny 中使用的所有低级平台特定套接字 API 函数的访问。 IncUsage() 本身是一个 class 方法,因此不会在 TIdStack 对象实例上调用它,因此只需调用 IncUsage() 本身并不是异常的原因。

在内部,IncUsage()IdStack 单元中使用三个全局变量:

GStackCriticalSection: TIdCriticalSection
GInstanceCount: LongWord
GStackClass: TIdStackClass

所有三个变量在各自的声明中都初始化为 0/nil,然后是 GStackClassGStackCriticalSectionIdStack单元的初始化部分中分配/构造。

仅当这些变量之一在调用 IncUsage() 时无效时,才会发生异常(除非异常来自 TIdStack 构造函数,但我在您的调用堆栈中看不到它)。

也许您的项目中的某些内容阻止了初始化的调用,导致IncUsage()在尝试进入GStackCriticalSection时崩溃锁定(但我在调用堆栈中没有看到 TIdCriticalSection.Enter)?有一个 Assert() 来确保 GStackCriticalSection 在使用之前不是 nil,但也许你的 Indy 副本是在禁用断言的情况下编译的?

关于delphi - 当我在表单上放置 TidSMTP 时出现访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958575/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com