【发布时间】:2009-02-07 15:52:15
【问题描述】:
我考虑过创建自己的文件,但要使其 100% 与 Java .properties 文件兼容,需要考虑很多细节,所以我先问一下。
【问题讨论】:
标签: delphi properties
我考虑过创建自己的文件,但要使其 100% 与 Java .properties 文件兼容,需要考虑很多细节,所以我先问一下。
【问题讨论】:
标签: delphi properties
曾经有一个名为Gel 的Java IDE。它是用 Delphi 编写的,它是一个很好的 IDE,所以我希望它能够处理属性文件。作者已停止该项目的工作。在他的blog post describing the project's cancellation 中,他提到对使项目开源的前景持开放态度,但它从未真正起飞。如果你问得好,你可能会得到你正在寻找的那部分代码。
对您发现的任何使用TStrings 作为其界面的解决方案持怀疑态度。尽管该类具有Names 和Values 属性,使其作为处理键/值对的类具有吸引力,但它与Java 的属性文件并不完全兼容。原因是 Java 允许“=”作为键名中的字符,TStrings 类通过查找字符串中的第一个“=”字符来检测名称的结尾和值的开头。此外,Java 属性文件可以使用“:”作为分隔符,甚至可以使用普通的空格。
【讨论】:
不是 Java 人,但据我所知 .properties 文件伪装成类似于 .INI 文件;它有 name=value 对,没有节名。您可以使用 Delphi 的 TStringList 来处理它;它具有 Names 和 Values 属性。
例如,从 .properties 文件中读取以下行:
MyProgramData=c:\documents and settings\DR\Application Data\MyApp
我可以简单地使用:
var
SL: TStringList;
MyDataPath: string;
begin
SL := TStringList.Create;
try
SL.LoadFromFile('myapp.properties');
MyDataPath := SL.Values['MyProgramData'];
finally
SL.Free;
end;
// Do something with MyDataPath
end;
对于过于迂腐的读者,我并不是建议 TStringList 允许您使用 .properties 文件的全部功能;但是,可能足以满足您的需要。 (正如我所说,我不是 Java 人。)
【讨论】: