L
lb3141
Unregistered / Unconfirmed
GUEST, unregistred user!
如何通过SetLastError更改错误信息:<br>我定义了一个记载错误消息的结构,如下:<br><br>(*----------------------------------------------------<br>描述:消息引发异常的错误描述结构,<br> 用此结构来记载该错误所经过的每个对象的方法。<br>-----------------------------------------------------*)<br>type<br> PExcept = ^TExcept;<br> TExcept = packed record<br> Succeed: Boolean; //是否成功<br> ParamsList: string; //参数<br> ClassName: string; //类名称<br> MethodName: string; //方法名称<br> ExecuteTime: string; //激发时间<br> ErrorTexts: string; //错误日志<br> ErrorType: TErrorType; //错误等级<br> end;<br><br>(*----------------------------------------------------<br>描述:消息引发异常的错误描述结构,<br> 用此结构来查询错误结构<br> 参数DebugInfo相当于array of PExcept<br>-----------------------------------------------------*)<br>type<br> PMessageExcept = ^TMessageExcept;<br> TMessageExcept = packed record<br> Owner: TComponentName; //引发对象<br> MethodName: string; //方法名称<br> MessageName: string; //消息名称<br> DebugInfo: TList; //调试的错误信息(详细)<br> end;<br> Arr_PMessageExcept = array of PMessageExcept;<br><br>我想在程序出错时将系统的错误消息在加上我自订义的错误消息解释合并为上述消息结构PMessageExcept ,<br>然后用SetLastError将PMessageExcept结构的地址存入,<br>最后通过FormatMessage将PMessageExcept结构的地址读出来,代码如下:<br>var<br> Buffer: PChar;<br> FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or<br> FORMAT_MESSAGE_ALLOCATE_BUFFER, nil, GetLastError, 0, Buffer,<br> SizeOf(Buffer), nil);<br>但我试验了很多方法,读出的PMessageExcept结构总是nil,<br><br>那位大虾帮一下小第,分不够可在加!!!!!<br>在线恭候!!!!!<br>