gpt4 book ai didi

Delphi inifiles 读取日期时间

转载 作者:行者123 更新时间:2023-12-03 15:28:57 28 4
gpt4 key购买 nike

本质如下:

procedure TForm1.Button1Click(Sender: TObject);
var
cfile: TInifile;
Date1: TDateTime;
begin
Date1 := IncYear(Now, -50);
cfile := TInifile.Create(ExtractFilePath(Application.ExeName) + 'Settings.ini');
try
cfile.WriteDateTime('Main', 'DateTime', Date1);
ShowMessage('Recorded in the ini file ' + DateTimeToStr(Date1));
Date1 := cfile.ReadDateTime('Main', 'DateTime', Now);
ShowMessage('Read from ini file ' + DateTimeToStr(Date1));
finally
cfile.Free;
end;
end;

ini 文件中的条目顺利通过。文件中写入 04-Dec-63 17:28:14。从 ini 文件读取也不起作用,消息为“04-Dec-63 17:28:14 不是有效的日期和时间”。

Windows 7 Enterprise х32、Embarcadero Delphi XE 可移植

最佳答案

您已将日期/时间以文本形式写入文件。并使用创建该文件的用户的区域设置对其进行格式化。由于不同的用户有不同的区域设置,您注定无法可靠地读取该文件。您需要对不依赖于区域设置的日期使用可靠的格式。

看起来最自然的两个选项:

  1. 使用 TDateTime 的底层表示形式存储为浮点值。
  2. 使用预先确定的格式存储为文本。

对于选项 1,您需要确保使用预先确定的小数分隔符,以避免出现与现在完全相同的问题!这意味着您需要在 TDateTimestring 之间执行自己的转换,因为 WriteFloatReadFloat 方法使用与区域设置相关的全局格式设置。 SysUtils 中存在接受格式设置参数的 FloatToStrStrToFloat 重载。

对于选项 2,RTL 包含使用指定格式执行日期/时间转换的各种函数。 SysUtils 中存在接受格式设置参数的 DateTimeToStrStrToDateTime 重载。

如果您希望人们可以轻松读取或编辑文件,则应首选选项 2。

关于Delphi inifiles 读取日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20419347/

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