Delphi XE2提示我文件日期/时间已经改变,但事实并非如此.我应该担心吗?

Jer*_*dge 4 ide delphi datetime delphi-xe2

在项目打开的情况下,我在工作计算机上打开了Delphi IDE.刚才,我通过Windows远程桌面连接到我的工作电脑,并被提示......

Module [file path.pas]'s time/date changed. Reload?
Run Code Online (Sandbox Code Playgroud)

对于打开的项目中的每个文件,都会显示相同的消息.

我应该担心吗?有什么改变吗?我检查了源,没有什么不同.

Jer*_*dge 5

事实上,Daylight Savings Time刚刚结束,观察它的所有区域都已经过了一个小时.Delphi IDE不知道这一点,因此打开的所有文件的日期/时间将与现实不同一小时.

我希望很多人会在今天或明天看到这个,或者每当他们回到他们在时间变化期间保持开放的IDE时.

  • 是的,这是IDE中的已知问题.有趣的是,它只显示当前在编辑器中打开的文件的消息,但不显示属于项目但当前未在编辑器选项卡/窗口中打开的文件的消息. (3认同)
  • @Flash:为什么这是一个"IDE bug"?IDE具有打开的文件,并且系统时间已更改.现在打开文件的日期/时间与磁盘上的日期/时间不匹配.IDE询问是否应该重新加载,因为它不知道*为什么*日期/时间发生了变化(操作系统做了); 对于所有IDE都知道,您可以在外部程序或IDE的不同副本中编辑该文件.这样做实际上是*好*,所以你可以确保你实际上正在处理源的当前副本.这里没有**错误**. (3认同)
  • IDE不应该处理DST.所有它应该做的是保持`GetFileTime`返回参考 - 没有本地转换. (3认同)
  • 我没有看到它是如何被称为*bug*当它的工作完全按照设计工作.它通知您内存中文件的时间戳与磁盘上的时间戳不匹配(这是事实,因为文件日期/时间戳基于*local*时间,本地时间已经改变了一个小时).如果您的软件在编写时完全按照您希望的方式工作,那么这不是一个错误. (2认同)
  • WM_TIMECHANGE只说时间已经改变,而不是为什么改变了,或改变了多少.它没有多大用处,因为IDE无法确定时间变化是否仅仅是由于DST.更好的解决方法是在内部使用UTC来存储所有文件时间戳.但是我同意Ken的观点,认为这对于使用IDE代码来说是太过分了. (2认同)