用VC读取和分析格式化文本配置文件

2016-02-19 16:19 16 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的用VC读取和分析格式化文本配置文件懂设计的网友们快点来了解吧!

【 tulaoshi.com - 编程语言 】

  大多数的应用程序都有需要配置的参数,配置参数的保存有多种方法,比如采用数据库保存、二进制文件保存、格式化的文本文件保存,各有优缺点,对于一般小的安全性要求不高应用程序,推荐采用格式化文本文件保存方式,这样可以节约编辑修改的界面编程,使用记事本程序编辑即可。

  早期的windows就是采用的INI格式文本文件。现在很多应用程序包括大型的软件也还在采用格式化文本文件保存配置参数,比如Bentely MicroStation GIS平台GEOGRAPHICS8.0。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  本文给出的就是利用VC来读取和分析配置文本文件,这是笔者这消防监控系统远程终端软件使用的方法。同时给出一个C++类来封装配置文本文件的读取分析。

  下面是我采用的配置文件的例子,包含单个参数定义,表格参数定义,注释:

// 协议名称: TL
// 工程: SQ
// 配置人: JY
#DEFINE_BEGIN //以下为常量定义

//通信参数
@COM_PORT .COM1 //COM口
@COM_BAUDRATE 1200 //波特率
@COM_BITSIZE 8 //数据位 number of bits/byte, 4-8
@COM_STOPBIT 0 // 0,1,2 对应 1, 1.5, 2
@COM_PARITY 0 //0-4对应no,odd,even,mark,space
@STATIONNO 0 //终端号
@TCPIP_SERVERIP 192.168.0.10 //服务器IP地址
@TCPIP_PORTNO 3024 //端口

#DEFINE_END


#TABLE_BEGIN //表格
//编号 识别字符串
//例子如下
0 Ion Detector, ALU1, L1S43 //测量台2#离子烟感探测器 报警
1 Thermal Det, ALU1, L1S39 //值班室温感探测器报警

#TABLE_END

语法解释:
// 单行注释
#DEFINE_BEGIN 单个参数定义的开始标记
#DEFINE_END 单个参数定义的结束标记
#TABLE_BEGIN 表格参数开始标记
#TABLE_END 表格参数结束标记

单个参数的配置:
每个参数一行:以空格、TAB制表符作为分隔,注释可选,每行结束后有Enter键换行。
表格参数配置:第一列为数字编号,作为ID用,第一列和第二列之间采用空格、TAB制表符作为分隔,其他列之间采用','逗号、空格、TAB制表符分隔,因此从第二列起,字符串中间夹的空格是有效字符。比如上面例子中的第一行解释如下:
"0","Ion Detector","ALU1","L1S43"
同样,表格参数也是每行有Enter键换行。
下面给出一个C++类来完成这个格式的文本配置读取和分析。

规模:

文本文件的大小:48kbytes
单个参数定义个数:不限
表格参数定义: 100行 X 4列
这些规模大小可以修改下面的宏定义来满足你的需要

#define TABLE_MAXROW 100
#define TABLE_MAXCOL 5 //含索引ID列
typedef struct{
int nID;
char s[TABLE_MAXCOL-1][64];

}TAG_TABLEREC,*LPTABLEREC;

class CDataTxt
{
public:
CDataTxt();
~CDataTxt();
CString m_szPath;//配置文件全路经名

BOOL Read();//读入文件
BOOL GetDefine(LPCTSTR lpszName,CString &szVal);//获取定义

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

//{{TABLE
TAG_TABLEREC m_Table[TABLE_MAXROW];
int m_nRows;
/

来源:https://www.tulaoshi.com/n/20160219/1611687.html

延伸阅读
  1. 格式化 fdformat /dev/fd0H1440 2. 作档案系统 mkfs -t ext2 /dev/fd0 
标签: Web开发
曾经为看别人写的杂乱代码而头痛吗?曾经为看BWindow代码而烦恼吗?曾经为减小JS体积和JS的可读性之间的矛盾而左右徘徊吗?最好的办法是有个代码格式化和代码压缩的程序,今天总算有了,它是纯JS编写的,当然也就是开源的了.不好意思,做个广告先:),老早就想写这个代码了,今天总算利用这个周末把它写完了,由于写的仓促,还有些小BUG,请经常注意更新!...
DiskGenius如何格式化分区(快速格式化) 分区建立后,必须经过格式化才能使用。本软件目前支持NTFS、FAT32、FAT16、FAT12等文件系统的格式化。 首先选择要格式化的分区为当前分区,然后点击工具栏按钮格式化,或点击菜单分区 - 格式化当前分区项,也可以在要格式化的分区上点击鼠标右键并在弹出菜单中选择格式化当前分区项。程序会弹...
标签: 电脑入门
提示磁盘未被格式化,是否格式化的解决方法 [适用] 1、典型地,台式机硬盘、笔记本盘、移动硬盘、U盘、数码卡、MP3; 2、普通硬盘; 3、很少的,盘阵等采用WINDOWS系统的存储; [症状] 1、突然袭断电、移动硬盘或U盘等,未正常关闭状态下直接拔下,下次接入系统后双击盘符提示磁盘未格式化,是否格式化 2、数码相机、手机等非常规死机...
标签: 服务器
Nginx 配置文件解析 cycle = ngx_init_cycle(&init_cycle): 1、在内存池中分配一个ngx_cycle_t变量,并初始化它的各个成员。 2、调用core类型的create_conf,实际只有一个ngx_core_module_create_conf函数----初始化ngx_core_conf_t结构(存放core_module支持的指令),保存在ngx_cycle-conf_ctx数组中。可以说,此时,ngx_c...

经验教程

448

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部