用VC讀取和分析格式化文字配置檔案

2021-09-20 19:03:56 字數 3256 閱讀 7766

大多數的應用程式都有需要配置的引數,配置引數的儲存有多種方法,比如採用資料庫儲存、二進位制檔案儲存、格式化的文字檔案儲存,各有優缺點,對於一般小的安全性要求不高應用程式,推薦採用格式化文字檔案儲存方式,這樣可以節約編輯修改的介面程式設計,使用記事本程式編輯即可。

早期的windows就是採用的ini格式文字檔案。現在很多應用程式包括大型的軟體也還在採用格式化文字檔案儲存配置引數,比如bentely microstation gis平台geographics8.0。

本文給出的就是利用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 structtag_tablerec,*lptablerec;

class cdatatxt

}private: 

char m_cbuf[1024*48];

int m_nbufsize;//=1024*48;

int m_ndatasize;

cstring m_szdefine;//定義段

int m_ndefinelen;

cstring m_sztable;//**段

int m_ntablelen;

void delnote();//去掉注釋

void formattable(void);//規格化**

};cdatatxt::cdatatxt()

cdatatxt::~cdatatxt()

bool cdatatxt::read()

void cdatatxt::delnote()//去掉注釋,分成定義段和**段

else//cc=='/'

else}}

}m_ndatasize=szt.getlength();

sprintf(m_cbuf,"%s",szt);

int ns=szt.find("#define_begin",0);

int ne=szt.find("#define_end",0);

if((ns==-1)||(ne==-1)) return;

ns+=13;

m_szdefine="";

for(i=ns;i;

m_ndefinelen=m_szdefine.getlength();

ns=szt.find("#table_begin",0);

ne=szt.find("#table_end",0);

ns+=12;

if((ns==-1)||(ne==-1)) return;

m_sztable="";

for(i=ns;i;

m_ntablelen=m_sztable.getlength();

formattable();//規格化**

}bool cdatatxt::getdefine(lpctstr lpszname,cstring &szval)//獲取定義

else i++;

}return true;

}void cdatatxt::formattable()//規格化**

szline="";}}

else szline+=cc;

i++;

}m_nrows=nrow;

}void test()

if(dt.getdefine("@com_baudrate",szval))

int i;

for(i=0;i.nid,

&(dt.m_table.s[0][0]),

&(dt.m_table.s[1][0]),

&(dt.m_table.s[2][0]),

&(dt.m_table.s[3][0]));}}

檔案讀取:

void cshotdetect::writetotext(int p1, longlong p2)

file.seektoend();

file.write(ch_str1,length);

file.close();

用CSS格式化Flash文字

04乙個新的功能就是能載入外部的 css檔案並使之應用到 flash 文字,現在有乙個新的類 類?因為新的actionscript2是基於類的指令碼語言 textfield.stylesheet class,就是這個類的幾個方法使我們能象給html定義 css一樣來 格式化flash 文字,比如字型...

2 1 2 文字格式化元素

1 b 定義粗體文字。該標籤可以指定id class style等核心屬性,還可以指定onclick等各種事件屬性。eg 加粗文字 2 i 定義斜體文字。該標籤可以指定id class style等核心屬性,還可以指定onclick等各種事件屬性。eg 斜體文字 3 em 定義強調文字,實際效果與斜...

4 4 文字格式化標籤

文字格式化標籤就是針對文字進行各種格式化的標籤,例如加粗 斜體 上標 下標等。一 粗體標籤 b strong 在html中,對文字加粗,可以使用2個標籤 b 或 strong 舉例 這是粗體文字 這是粗體文字ps strong 標籤比 b 標籤更具有語義性 二 斜體標籤 i cite em 舉例 斜...