请教设计处理程序配置文件的思想

diannaomingong 2009-02-23 11:39:21
程序大致思路是这样的: 程序需要初始化时读取ini文件中的一些key-value,比如 frameX=100,frameY=200,ip=192.168.0.1, apptitle=helloworld 这样的。然后可以通过一个界面把改动的参数写回去。
现在,如何读取和保持ini文件我已经能够实现了,但是我为设计读取配置文件的程序结构犯了迷糊。

我的想法是,程序初始化的时候,先初始化一些变量,这些变量比如ip,初始化一些比较“安全”的内容,尽管不是真正有效的内容(比如实际上程序所在机器ip是192.168.0.2,但是初始化为192.168.0.1),但是在一些数据处理时至少会比较安全,不会程序弹出个异常之类...然后程序读取app.ini里面的设置,再改变这些变量的值,然后程序再根据这些变量的值初始化程序的其他部分。(比如初始化frame的x,y) 如果app.ini文件找不到或者读的时候没读到参数,则这些变量用原初始化值。

现在问题就是,初始化的时候,这些变量用怎样的方式保存比较好? 是写到所有类的外面, 或者专门写到一个类里面? 用 static ? 用struct ? 我现在是,在所有类外面写了n个struct,例如

struct frameINI
{
int x;
int y;
wxString frameTitle;
};

struct setup_Server
{
wxString ip;
wxString id;
wxString password;
};
……
然后
struct setupDialogINI
{
frameINI myframe;
setup_Server myServer;
……
};

想通过 setupDialogINI.myframe.x 这样的法子来访问每个变量,以便分类和使用。

问题:

1. 初始化的时候,这些变量用怎样的方式保存比较好? 是写到所有类的外面, 或者专门写到一个类里面? 用 static ? 用struct ?
2. 我这样用很多个struct会不会有点笨,具体实现后会不会有什么隐患…… 有没有其他的比较好的设计思路,就是变量区分清楚些又能程序里容易访问的就好。






...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
diannaomingong 2009-02-24
  • 打赏
  • 举报
回复
我现在的法子是在app类(最顶层类)里弄些变量,然后用的文件里面加extern
a_rockboy 2009-02-23
  • 打赏
  • 举报
回复
1.
一般用宏
#define DEFAULT_IP (_T("192.168.0.1"))
或者const全局变量
const TCHAR DEFAULT_IP[] = _T("192.168.0.1");

2.实现功能就好。
我一般不用结构,直接作为类的成员变量。因为你做成一个结构,这个结构体也只是全局的一份拷贝,一般不推荐全局变量,到时候还是要放进App类或MainWindow类中,读取,操作的函数都在这个类中,其他类通过这个类的实例读取这些变量。封装一次也未尝不可。



diannaomingong 2009-02-23
  • 打赏
  • 举报
回复
总之我就是迷糊,程序读取ini文件设置初始化变量应该用怎样的结构比较好。
一般小程序
int x=0;

class xxx

void yyy

把变量类和函数外面就都能用。如果是复杂些的要读取配置文件的,许多个类的程序,这些设置应该放到哪里,用怎样的方式统一组织管理的好。

Dinelgua 2009-02-23
  • 打赏
  • 举报
回复
1. 初始化的时候,这些变量用怎样的方式保存比较好? 是写到所有类的外面, 或者专门写到一个类里面? 用 static ? 用struct ?
2. 我这样用很多个struct会不会有点笨,具体实现后会不会有什么隐患…… 有没有其他的比较好的设计思路,就是变量区分清楚些又能程序里容易访问的就好。


用合适的类包含对应的几个配置,都定义为static成员

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧