亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? grwtest.cpp

?? qt3.3.5,實現操作access數據庫例子,可以對數據庫進行簡單的操作.
?? CPP
字號:
#include "GRWTest.h"
#include "qmessagebox.h"
#include "qfile.h"
#include "qregexp.h"
#include "GFieldData.h"

#define CHS(x) QString::fromLocal8Bit(x)

#define MAX_CNT 20
#define MAX_LINE_LEN 4096

GRWTest::GRWTest(QWidget* parent, const char* name)
:QTable(parent)
{
	init();
}

GRWTest::~GRWTest()
{

}


void GRWTest::init()
{
	QHeader * th = horizontalHeader();
	
	setNumRows(MAX_CNT);
	setLeftMargin(0);
	//th->setLabel(0,CHS("序號"));
	//th->setLabel(1,CHS("屬性值"));
	//setColumnWidth(0,60);
	//setColumnWidth(1,150);
	m_qFile = QString("test.conf");
	m_qSection = QString("testsection");
	if(!readConfIni())
		QMessageBox::information(this,CHS("提示"),CHS("讀取文件失敗!"),CHS("確定"));
	else{
		setNumCols( m_childList.count() );
		QValueList<GFieldData*>::iterator it;
		it = m_childList.begin();
		for ( int i = 0 ; it != m_childList.end() ; ++it, ++i ) {
			th->setLabel(i,CHS((*it)->m_qsFieldQmName));
		}
	}
	//QTableItem * item = new QTableItem(this);
	//item->alignment(AlignVCenter);
}

bool GRWTest::readConfIni()
{
	bool bFlag = false;
	QFile qFile(m_qFile);
	bFlag = qFile.open(IO_ReadOnly);
	if ( !bFlag )
		return false;

	long lBeginPos = 0;
	long lEndPos = 0;
	long lsize = qFile.size();
	int data_len = 0;
	
	QStringList qsList;
	
	QString qsLine;
	QString qsTemp;
	
	while ( ! qFile.atEnd() )
	{
		qFile.readLine(qsLine,MAX_LINE_LEN);

		if ( -1 != qsLine.find(QRegExp("^(\\s+)?\\[" + m_qSection + "\\]" )) )
		{ 
			lBeginPos = qFile.at();
			while ( ! qFile.atEnd() )
			{
				qsLine = QString::null;
				lEndPos = qFile.at();
				qFile.readLine(qsLine,MAX_LINE_LEN);
				
				if ( -1 != qsLine.find(QRegExp("^\\s+$")) )	//空白行
					continue;
				
				if ( -1 != qsLine.find(QRegExp("^(\\s+)?\\[" )))
					break;
				
				if ( -1 == qsLine.find(QRegExp("^(\\s+)?define" ) ) ) {
					//真實的數據
					//analyzeFieldDataStr(pFieldDataList,qsLine);
				} else {
					//if (-1 != qsLine.find(QRegExp("^(\\s+)?(#|;|//)")) ) {	//注釋行
					qsTemp = qsLine.replace(QRegExp("(\\s+)?$(\\s+)?"),"");
					qsTemp += "\n";
					qsList.append(qsTemp);
					data_len += qsTemp.length();
					//	continue;
				}
			}
		}
	}
	qFile.close();
	int iCount=0;
	char * p_chTemp[100];
	for ( QStringList::Iterator it = qsList.begin(); it != qsList.end(); ++it,++iCount) {
		p_chTemp[iCount] = (char*)(*it).ascii();
		}

	QString strTemp;
	for (int k = 0 ; k < iCount ; k++)
	{
		strTemp = QString(p_chTemp[k]);
		strTemp = strTemp.replace(QRegExp("^(\\s+)?define:(\\s+)?"),"");	//去頭
		strTemp = strTemp.replace(QRegExp("(\\s+)?,(\\s+)?"),",");	//去掉所有的逗號前后的space
		strTemp = strTemp.replace(QRegExp("\\s+$"),",");	//去尾,去掉最后的space
		//strTemp = strTemp.replace(QRegExp(" "),"");//一次去掉所有空格
		
		QStringList qsListC = QStringList::split( ",", strTemp,true );
		GFieldData* pFieldData = new GFieldData();
		if ( NULL == pFieldData )
		return bFlag;
		
		QString qsTemp;
		int offset = 0;
		
		qsTemp = qsListC[offset++];
		if ( 0 == qsTemp.find("$") ) {
			pFieldData->m_iObjType = 1;
			pFieldData->m_qsFieldName = qsTemp.replace("$","");
		} else {
			pFieldData->m_iObjType = 0;
			pFieldData->m_qsFieldName = qsTemp;
		}
		
		pFieldData->m_qsFieldQmName = qsListC[offset++];
		pFieldData->m_iColumnWidth = qsListC[offset++].toInt();
		pFieldData->m_bReal = qsListC[offset++].toInt();
		pFieldData->m_bEditable = qsListC[offset++].toInt();
		pFieldData->m_iVisable_p = qsListC[offset++].toInt();
		pFieldData->m_iVisable_l = qsListC[offset++].toInt();
		pFieldData->m_iValueType = qsListC[offset++].toInt();
		pFieldData->m_qsFieldDescription = qsListC[offset++];
		
		m_childList.append(pFieldData);	
	}
			
	return true;
}

bool GRWTest::writeConfIni()
{
	bool bFlag = false;
	QFile qFile(m_qFile);

	bFlag = qFile.open(IO_ReadOnly);
	if ( !bFlag )
		return false;
	
	long lBeginPos = 0;
	long lEndPos = 0;
	long lsize = qFile.size();
	int data_len = 0;
	
	QStringList qsList;
	
	QString qsLine;
	QString qsTemp;

	while ( ! qFile.atEnd() )
	{
		qFile.readLine(qsLine,MAX_LINE_LEN);
		//lCurPos = qFile.at();
		if ( -1 != qsLine.find(QRegExp("^(\\s+)?\\[" + m_qSection + "\\]" )) )
		{ 
			lBeginPos = qFile.at();
			while ( ! qFile.atEnd() )
			{
				qsLine = QString::null;
				lEndPos = qFile.at();
				qFile.readLine(qsLine,MAX_LINE_LEN);
				
				if ( -1 != qsLine.find(QRegExp("^\\s+$")) )	//空白行
					continue;
				
				if ( -1 != qsLine.find(QRegExp("^(\\s+)?\\[" )))
					break;

				if ( -1 != qsLine.find(QRegExp("^(\\s+)?define" ) ) ) {
					//真實的數據
					//analyzeFieldDataStr(pFieldDataList,qsLine);
				} else {
				//if (-1 != qsLine.find(QRegExp("^(\\s+)?(#|;|//)")) ) {	//注釋行
					qsTemp = qsLine.replace(QRegExp("(\\s+)?$(\\s+)?"),"");
					qsTemp += "\n";
					qsList.append(qsTemp);
					data_len += qsTemp.length();
				//	continue;
				}
			}
		}
	}
	qFile.close();

	GFieldData* pFieldData = NULL;
	
	unsigned int i;
	
	QValueList<GFieldData*>::iterator it = m_childList.begin();

	for ( ; it != m_childList.end(); it++ )
	{
		pFieldData = (*it);
		if ( pFieldData != NULL ) {
			qsTemp.sprintf("define: %-26s%-20s%4d,%4d,%5d,%4d,%3d,%3d,    %-5s%s\n",
				(pFieldData->m_iObjType == 0) ? 
				(const char *)(QString(pFieldData->m_qsFieldName + ",").utf8()) :
				(const char *)(QString("$" + pFieldData->m_qsFieldName + ",").utf8()),
				(const char *)(QString(pFieldData->m_qsFieldQmName + ",").utf8()),
				pFieldData->m_iColumnWidth,
				pFieldData->m_bReal,
				pFieldData->m_bEditable,
				pFieldData->m_iVisable_p,
				pFieldData->m_iVisable_l,
				pFieldData->m_iValueType,
				(const char *)(QString(pFieldData->m_qsFieldDescription + ",").utf8()),
				(const char *)(pFieldData->m_qsRawFormat.utf8())
				);
			
			qsList.append(qsTemp);
			data_len += qsTemp.length();
		}
	}
	
	qsTemp = "\n";
	qsList.append(qsTemp);
	data_len += qsTemp.length();
	
	data_len += lsize - lEndPos;
	char * pData = new char[data_len + 256];
	
	if ( pData == NULL )
		return false;
	
	memset(pData,0,data_len + 256);
	char * p = pData;
	for ( i = 0; i < qsList.count(); i++ )
	{
		qsTemp = qsList[i];
		memcpy(p,qsTemp.latin1(),qsTemp.length());
		p += qsTemp.length();
	}
	
	FILE* pFile = fopen(m_qFile, "r+w");
	if ( !pFile )
		return false;
	
	fseek(pFile, lEndPos, SEEK_SET);
	fread(p, sizeof(char), lsize - lEndPos, pFile); 
	
	fseek(pFile, lBeginPos, SEEK_SET);
	fwrite(pData,sizeof(char),strlen(pData),pFile);
	
	fclose(pFile);
	delete [] pData;

	return true;
}

//從指定文件中讀取一行
int GRWTest::ReadLineFromFile(FILE* IniFile, char* lpszLineBuf, int iLen)
{
	int   iPos;

	/*-----------------------------------------------------------------------------

	注意:如果文件以t即text方式打開,則回車換行兩個字符在input時被當作一個字符處理,
	      因此fgets()得到的一行字符串尾部只有一個換行符而沒有回車符,而如果是binary
		  方式打開則一行字符尾部同時有回車換行兩個字符,打開方式的不同直接影響fgets
		  讀入一行后刪除行尾部控制字符的操作,如果是text方式,只要刪除換行符號即可,
		  如果是binary方式,則要刪掉兩個控制字符。以下對兩個控制字符是否存在都進行
		  判斷,可以同時適應text和binary兩種模式,也就能同時適應Windows下和Unix兩種
		  不同格式的文本文件(unix文本文件行末只有一個換行符,即0A,沒有回車符)
		  
		  后續記錄: fopen()中打開模式里的"t"是微軟自己定義的,Ansi C 只支持 "b"模式

	----------------------------------------------------------------------------*/

	if(fgets(lpszLineBuf, iLen, IniFile) != NULL)					 //fgets()函數遇到第一個換行符(0x0A)后結束(包括換行符),然后在尾部追加一個NULL后返回,因此換行符總是倒數第二個字符
	{
		iPos = strlen(lpszLineBuf) - 1;
		
		if( lpszLineBuf[iPos-1] == 0x0D )  lpszLineBuf[iPos-1] = 0;  //刪除尾部可能存在的回車符(0x0D)
		if( lpszLineBuf[iPos] == 0x0A )  lpszLineBuf[iPos] = 0;      //刪除尾部可能存在的換行符(0x0A)
	}
	else
		return -1;

	return 0;  //0表示正確
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品资源二区在线| 尤物视频一区二区| 亚洲国产精品黑人久久久| 一区二区在线观看av| 久久狠狠亚洲综合| 91国偷自产一区二区开放时间| 欧美一区二区三区免费大片| 国产精品高清亚洲| 美女一区二区在线观看| 色呦呦日韩精品| 欧美国产精品一区二区| 久久成人羞羞网站| 欧洲国产伦久久久久久久| 国产亚洲欧美日韩日本| 日本aⅴ精品一区二区三区| 91免费视频网| 国产精品三级久久久久三级| 久久99国产精品免费网站| 欧美色精品在线视频| 国产精品第一页第二页第三页| 蜜臀av性久久久久蜜臀aⅴ| 日韩精品自拍偷拍| 亚洲综合成人在线视频| 成人99免费视频| 久久久久久久综合| 精品在线免费视频| 精品区一区二区| 欧美a级一区二区| 这里只有精品免费| 日本亚洲欧美天堂免费| 欧美在线免费播放| 玉米视频成人免费看| 91在线精品一区二区| 国产欧美精品一区aⅴ影院 | 99精品欧美一区二区三区小说| 久久久久一区二区三区四区| 久久爱www久久做| 精品久久国产字幕高潮| 久久精品国产亚洲高清剧情介绍 | 欧美精品一区二区三区很污很色的 | 亚洲va国产va欧美va观看| 91精品1区2区| 亚洲精品国产品国语在线app| 成人精品视频网站| √…a在线天堂一区| 99久久婷婷国产综合精品| 亚洲色图视频网| 色婷婷av一区二区三区软件 | 99久久99久久免费精品蜜臀| 国产精品九色蝌蚪自拍| 91免费观看国产| 一区二区三区中文字幕| 欧美系列亚洲系列| 视频一区视频二区中文字幕| 欧美一区二区三区精品| 国内精品久久久久影院薰衣草 | 国产一区999| 国产精品麻豆欧美日韩ww| 一本到三区不卡视频| 性久久久久久久| 精品va天堂亚洲国产| www.日韩大片| 亚洲午夜久久久| 亚洲精品一区二区三区四区高清| 丁香亚洲综合激情啪啪综合| 亚洲天堂免费在线观看视频| 欧美福利电影网| 99国产精品国产精品久久| 亚洲自拍偷拍麻豆| 日韩精品一区二区三区四区| www.综合网.com| 天堂午夜影视日韩欧美一区二区| 欧美va天堂va视频va在线| www.av精品| 日韩高清一级片| 中文字幕永久在线不卡| 91精品国产综合久久福利| 成人午夜精品一区二区三区| 亚洲成人黄色影院| 久久天堂av综合合色蜜桃网| 日本韩国一区二区三区视频| 捆绑调教美女网站视频一区| 亚洲精品视频一区| 2023国产一二三区日本精品2022| 一本一本久久a久久精品综合麻豆| 蜜臀av国产精品久久久久| 亚洲精品久久嫩草网站秘色| 欧美tickling网站挠脚心| 一本在线高清不卡dvd| 国产精品一区二区在线播放| 亚洲第一狼人社区| 成人免费一区二区三区视频| 日韩无一区二区| 欧美在线999| 成人激情小说网站| 精品一区二区三区香蕉蜜桃 | 岛国精品在线播放| 免费一级欧美片在线观看| 亚洲综合无码一区二区| 国产精品色眯眯| 久久久九九九九| 精品久久国产老人久久综合| 欧洲av一区二区嗯嗯嗯啊| 成人av先锋影音| 国产伦精品一区二区三区免费 | 成人免费视频免费观看| 久久99精品久久久久久久久久久久 | 国产乱码精品一区二区三区忘忧草| 亚洲成人av电影| 亚洲免费资源在线播放| 中文字幕一区二区三区不卡 | 日韩高清一区在线| 午夜亚洲福利老司机| 亚洲精品国产品国语在线app| 国产精品国模大尺度视频| 中文字幕精品一区二区三区精品| 欧美精品一区二区精品网| 日韩一级欧美一级| 日韩免费一区二区三区在线播放| 欧美美女一区二区| 欧美日本韩国一区| 911精品产国品一二三产区| 欧美日韩国产一二三| 欧美日韩免费高清一区色橹橹| 91理论电影在线观看| 色哟哟在线观看一区二区三区| 91色porny蝌蚪| 在线免费观看不卡av| 精品视频免费在线| 91精品国产一区二区三区| 91精品国产乱| 精品国产乱码久久久久久久久 | 欧美草草影院在线视频| 欧美成人伊人久久综合网| 久久综合九色综合97婷婷女人 | 欧美精品自拍偷拍| 日韩视频免费观看高清在线视频| 日韩情涩欧美日韩视频| 久久综合色8888| 亚洲欧洲精品一区二区精品久久久 | 亚洲黄色尤物视频| 亚瑟在线精品视频| 久久国产精品免费| 成人免费高清视频| 在线一区二区三区四区| 欧美精品乱人伦久久久久久| 337p日本欧洲亚洲大胆精品| 中文字幕精品综合| 亚洲综合色区另类av| 久久aⅴ国产欧美74aaa| 99这里都是精品| 欧美日韩国产精选| 久久久高清一区二区三区| 亚洲精品免费在线| 久久99久久99小草精品免视看| 成人性视频免费网站| 欧美亚洲国产一区二区三区va| 日韩午夜激情电影| 日韩码欧中文字| 麻豆精品新av中文字幕| 成人一级视频在线观看| 欧美日韩一区二区三区不卡 | 国产欧美1区2区3区| 一区二区欧美国产| 国产乱国产乱300精品| 欧美日韩免费在线视频| 国产精品欧美极品| 亚洲国产一区二区视频| 国产白丝精品91爽爽久久| 欧美三级午夜理伦三级中视频| 久久精品一区二区三区av| 亚洲综合色区另类av| 粉嫩av亚洲一区二区图片| 777亚洲妇女| 亚洲免费三区一区二区| 激情欧美日韩一区二区| 欧美日免费三级在线| 国产精品久久久久四虎| 精品一区二区三区在线播放| 欧美三级在线视频| 亚洲免费在线电影| 国产精品99久久久久| 日韩三级视频在线观看| 五月开心婷婷久久| 色综合网色综合| 亚洲欧美国产毛片在线| 国产一区二区成人久久免费影院 | 日本高清不卡aⅴ免费网站| 久久久久久久综合| 久久精品国产在热久久| 欧美日韩亚州综合| 一区二区三区蜜桃| 色综合久久中文综合久久牛| 日本一区二区不卡视频| 国产一区二区三区蝌蚪| 日韩丝袜美女视频| 日韩激情中文字幕| 欧美精品xxxxbbbb| 性久久久久久久久久久久| 欧美三区在线观看|