大家做配置文件一般放在哪里。(100分)

  • 主题发起人 主题发起人 编程傻子
  • 开始时间 开始时间

编程傻子

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个配置,有30多个参数要。
我原来做的
1.都放在.ini文件, 用户可以修改不安全, 
2。存放在注册表里。 不是很好,因为有很多。读出来很慢。
3。存放在数据库表里,我测试过无论是有ado,或者是.db本地表,占用内存大大。

4。存放在.dat文件,这个我没有做过,不知可行。

5。在家帮忙出注意。
谢谢各位,急急!!!!
 
3。存放在数据库表里,

4。存放在.dat文件,以二进制存取
 
一般我也放在ini文件中,但用我们用户计算机水平较低不用担心
 
注册表,至少比数据库快,也安全,有的人爱删文件,DAT,数据库不好!
 
可以考虑写dat文件。
 
放INI里没事,用户不会随便去改的,而且你可以先告戒一下用户:乱改了配置文件程序运行
出问题我可不管!

放在数据里效率低,如果是需要频率读写的情况下就不太可取,而且你怎么能肯定用户会更
愿意修改INI文件而不是数据表里的内容呢?但如果是多个布署地点相距很远的客户端都需
要读取这些配置参数的话,最好还是写在数据表里,没人会喜欢为了改个参数而到处跑的。

写在二进制文件里?Yes! it's my favorite,但应用仅限于本地参数,而不是全局参数。
如果不知道二进制文件怎么操作,在论坛里查一下“TFileStream”或“FileWrite”关键
字吧,一两句话也说不清。
 
从安全和速度上考 虑,哪个更佳一些。
注册表,也不是很安全,一般人都会弄这东西。
而且每次运行程序的时候都要判断这个键是否存在,如果被用户删了的话,
还得添加一个默认的键值。

存放在.dat文件里,有哪些好处或话处。
 
我还是喜欢把它放在ini中
如果怕被修改,简单转换格式存储(加密)就行,为ini专门封装一个读写类,问题就简单多了

比如:
aIni.pas
interface
procedure createinifile();
//DisCrypt inifile;
//open Inifile;
procedure closeInifile();
//EncryptIniFile();
//CloseIniFileFile;

function ReadASetting:aSetting;
procedure WriteASetting

function ReadAnotherSetting:aSetting;
procedure WriteAnotherSetting
...






 
2。存放在注册表里。 不是很好,因为有很多。读出来很慢。

不是吧。速度应该不是问题所在吧
只要首先当注册表中没有东西运行程序。就可以了啊。
配置文件中也不该放关键的东西吧,
无非是一些类似对象的Top left visible诸如此类的东西吧
建议放在注册表中解决简单的配置问题。
涉及到权限之类的关键信息建议做数据字典解决。
 
都不错,抓秋算了!
其实我会选1或2,简单……
注册表写在隐蔽点的地方,一般没人会去碰(注册码处外),
 
我会放在INI中
 
放到DAT文件
 
如果是dat文件,不妨将配置信息定义成一个结构。用blockread和blockwirte直接写、读文件就可以了
很方便的。
 
谢谢 张无忌,zw84611 两位大侠
to zw84611 
我存在.dat文件里应该是没有问题是吧,
将配置信息定义成一个结构,用blockread和blockwirte直接写、读文件。
以前没做过,我查一下资料。 
如果可以能给点参考程序吗? 
 
用blockread读写文件速度怎么样,怎样最快。
 
用文件流,DAT文件你可以放到系统文件目录里,别人是不敢删的
 
查一下帮助就知道了呀。举个例子:

type
TMyData = packed record
w: packed array[0..2]of word;
dw: packed array[0..8]of dword;
end;

var
Form1: TForm1;
f:file of TMyData;
Data: TMyData;
implementation

{$R *.DFM}

procedure TForm1.ShowData;
begin
with Data do
memo1.Lines.Add(format('w1:%d,w2:%d,w3:%d,dw1:%d,dw2:%d,dw3:%d',[w[0],w[1],w[2],dw[0],dw[1],dw[2]]));
end;

//读
procedure TForm1.Button1Click(Sender: TObject);
var
NumRead:integer;
begin

//caption := inttostr(Sizeof(Data));
assignfile(f,'T0105.101');
Reset(f);
BlockRead(f,Data,Sizeof(Data),NumRead);
closefile(f);
ShowData;

end;

//写
procedure TForm1.Button2Click(Sender: TObject);
begin
Data.w[0] := 1;
Data.w[1] := 2;
Data.w[2] := 3;
Data.dw[0] := 4;
assignfile(f,'T0105.101');
ReWrite(f);
BlockWrite(f,Data,Sizeof(Data));
closefile(f);
end;

或者你可以用流。
 
多人接受答案了。
 
后退
顶部