D
dark_power
Unregistered / Unconfirmed
GUEST, unregistred user!
今天学习HTTP协议时,使用IdHTTP调试时遇到ConvertError“invalid argument to date encode”。一开始是一头雾水,虽然知道是无效的日期编码参数,但并不清楚是为什么。把自己的源代码里里外外折腾了半天,无果。随,优先上网查询是否有已解决的类似问题,结果出乎意料。。。很多人都遇到过,却没人解决过。。。因为,在非调试状态下,工作正常,所以有人说这时Delphi的bug,不用去管他。但至于是什么原因引起的,高手们也真的没有去理睬这个传说中的bug。我这人比较笨,也比较死心眼,不到黄河心不死。既然求助无门,那就自力更生。自己继续调试跟踪,结果发现是因为一些网站的页面没有失效期,也就是Expires="-1"时,在调试状态下会发生这个错误。独立运行时是不会识别这个错误的。继续跟踪调用堆栈,发现是在TIdHTTPResponse中获取头域后在格式化时因为被赋了空值导致GMTToLocalData函数调用一系列函数调整,最终EncodeDate在TryEncodeDate失败后返回False,这导致ConverError函数被调用,抛出EConvertError错误。非调试状态下为出现这个错误或许是因为这个错误被封闭在IdHTTPHeader单元中。调试状态下,调试器的优先级可能是太高了,都拦截下了。。。明天要靠驾照的科目1,没太多时间深入探究,希望有时间深入调研一下,更希望有朋友和我一起来探讨一下这类问题。虽然神坛在没落,但我觉得这不是片面的语言或工具本身的问题。Delphi做得太多太好了,以至于用户很少去真正的调试应用程序。现在几乎看到的都是嚷嚷着“为什么会这样?”“BugBug!”“质量低下,劣质产品”,又有多少程序员自身就是质量低下的劣质产品?我觉得包括我自己也不是啥质量优良的!如今看不到人讨论调试,也从没见过有人问调用堆栈是干嘛的?到底是我们在没落还是语言和工具在没落?