【问题标题】:Delphi ini file readingDelphi ini文件读取
【发布时间】:2018-10-03 13:50:23
【问题描述】:

我被困住并请求您的帮助,以便获得一个解决方案,以读取我的 ini 文件并将其放置在我的 memo1 表单中,并带有一个按钮。

这是在我的文本文件中:

[Filename]

Work Time=03-10-2018 15:11

这是我正在使用的一些代码。

var
  aWorkTime: string;

procedure TForm1.button2(Sender: TObject):
begin
  Memo1.Lines.Clear;

  IniFile := TIniFile.Create(GetCurrentDir+'\Filename.ini');
try
  aWorkTime := IniFile.ReadString('Filename', 'Work Time', <'none'>);
finally
  IniFile.Free;
end;
end

我希望这是足够的信息,如果没有,请告诉我你缺少什么

【问题讨论】:

  • FWIW,GetCurrentDir 可能不是您需要的。这可以改变,不一定是你的应用程序的目录。
  • 啊是的文件需要工作时间是的,我的错误在那里输入了错误的名称。如果我删除 {GetCurrentDir} 我得到一个错误错误没有足够的实际参数。
  • 如果您想将整个 ini 文件读入备忘录,请使用类似 Memo1.Lines.LoadFromFile(FullIniFileName); 的内容。
  • 要获取文件名,请使用ExtractFilePath(Application.ExeName) + 'FileName.ini'。不要使用GetCurrentDir

标签: delphi ini


【解决方案1】:

您对GetCurrentDir 的使用存在问题。 当前目录 可能会更改,并且不必与您的 .exe 文件所在的目录相同。而是使用ExtractFilePath(Application.ExeName)

另外,不要一一读取项目,而是将整个 .ini 文件读取到您的备忘录中,请执行以下操作:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName) + 'FileName.ini');
end;

如果你只需要工作时间,那么你的代码就差不多了:

var
  aWorkTime: string;
  IniFile: TIniFile;
begin  
  Memo1.Lines.Clear;
  IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'FileName.ini');
  try
    aWorkTime := IniFile.ReadString('Filename', 'Work Time', '<none>');
    Memo1.Lines.Add('Work Time=' + aWorkTime);
  finally
    IniFile.Free;
  end;
end;

【讨论】:

  • ...或者如果您的 Delphi 版本支持它,TPath.Combine() 负责分隔符。
  • @Jerry:确实。也会发布。
  • "如果您不确定 ExtractFilePath 是否返回尾随路径分隔符" - it does,尤其是在使用像 Application.ExeName 这样的完整文件名作为输入时。
  • 这在 WIndows XP 时代还不错,但如果 EXE 在任一 Program Files 目录中,Vista 和更高版本您将与 UAC 作斗争。请参阅此问题的答案以获取替代方法:stackoverflow.com/questions/37276360/…
  • @Brian 我同意,但评论可能属于问题本身 :-)
猜你喜欢
  • 2013-04-18
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2011-12-26
  • 2012-06-29
  • 2016-02-23
相关资源
最近更新 更多