为啥得到的日期与实际不符?
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
IniFiles;
procedure TForm1.Button1Click(Sender: TObject);
var
inifile: TIniFile; //定义ini文件
Filename: string; //其文件名类型
Keyword4: TDateTime;
begin
Filename := GetCurrentDir + '\配置.ini';
inifile := TIniFile.Create(PChar(Filename));
inifile.WriteDate('小节名1', '关键字4', 2021-8-8);
Keyword4 := inifile.ReadDate('小节名1', '关键字4', Keyword4);
ShowMessage(DateToStr(Keyword4));
end;
end.
本帖最后由 Jack2002 于 2021-9-19 11:34 编辑
代码简单,没写注释,字符串转日期函数可使用StrToDate(String)。
var
inifile: TIniFile; //定义ini文件
Filename: string; //其文件名类型
Keyword4: TDateTime;
begin
Filename := GetCurrentDir + '\配置.ini';
inifile := TIniFile.Create(PChar(Filename));
inifile.WriteDate('小节名1', '关键字4', Date());
inifile.WriteDate('小节名1', '关键字5', EncodeDate(2021, 08, 08));
Keyword4 := inifile.ReadDate('小节名1', '关键字4', Keyword4);
ShowMessage(DateToStr(Keyword4));
Keyword4 := inifile.ReadDate('小节名1', '关键字5', Keyword4);
ShowMessage(DateToStr(Keyword4));
end; 本帖最后由 lies2014 于 2021-9-19 14:33 编辑
只改一句就可以了,其实就是数据类型转换的问题:
inifile.WriteDate('小节名1', '关键字4', StrToDate('2021-8-8')); yulinsoft 发表于 2021-9-19 16:59
为啥不用WriteString?通用性更好,ini本身就是文本文件,日期类型本质是浮点数,你的写法我也是第一次见。
开始最早吧,我就觉得会写文本型好像就够了,一看书原来有6种类型
于是我就蛋痛的试了试,书上的写法,不过觉得搞复杂了。 冥界3大法王 发表于 2021-9-19 17:32
开始最早吧,我就觉得会写文本型好像就够了,一看书原来有6种类型
于是我就蛋痛的试了试,书上的写法, ...
不复杂,这么搞肯定是有好处的,写入时如果确定格式不会出错就用WriteString,省去了转换操作,读入时可以ReadDate,也是免去了转换的操作,封装的目的就是为了使用更方便,并不是没用的!
页:
[1]