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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? inifile.cpp

?? 一個(gè)串口通信的程序
?? CPP
字號(hào):
// IniFile.cpp: implementation of the CIniFile class.
// Written by: Adam Clauss
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "IniFile.h"
#include "glovar.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

/////////////////////////////////////////////////////////////////////
// Construction/Destruction
/////////////////////////////////////////////////////////////////////

//default constructor
CIniFile::CIniFile()
{
}

//constructor, can specify pathname here instead of using SetPath later
CIniFile::CIniFile(CString inipath)
{
	path = inipath;
}

//default destructor
CIniFile::~CIniFile()
{

}

/////////////////////////////////////////////////////////////////////
// Public Functions
/////////////////////////////////////////////////////////////////////

//sets path of ini file to read and write from
void CIniFile::SetPath(CString newpath)
{
	path = newpath;
}

//reads ini file specified using CIniFile::SetPath()
//returns true if successful, false otherwise
bool CIniFile::ReadFile()
{
	CFile file;
	CFileStatus status;
	if (!file.GetStatus(path,status))
		return 0;
	CString readinfo;
	CStringArray * a;
	a=::GetLineFromFile(path);
	int curkey = -1, curval = -1;
	CString keyname, valuename, value;
	CString temp;
	for(int i=0;i<a->GetSize();i++)
	{
		readinfo=a->GetAt(i);
		if (readinfo != "")
		{
			if (readinfo[0] == '[' && readinfo[readinfo.GetLength()-1] == ']') //if a section heading
			{
				keyname = readinfo;
				keyname.TrimLeft('[');
				keyname.TrimRight(']');
			}
			else //if a value
			{
				valuename = readinfo.Left(readinfo.Find("="));
				value = readinfo.Right(readinfo.GetLength()-valuename.GetLength()-1);
				SetValue(keyname,valuename,value);
			}
		}
	}
	delete a;
	return 1;
}

//writes data stored in class to ini file
void CIniFile::WriteFile()
{
	CFile file;
	CString temp;
	file.Open(path,CFile::modeCreate | CFile::modeWrite);
	for (int keynum = 0; keynum <= names.GetUpperBound(); keynum++)
	{
		if (keys[keynum].names.GetSize() != 0)
		{
			temp=CString("[") + names[keynum] + "]\r\n";
			file.Write(temp,temp.GetLength());
//			inifile << '[' << names[keynum] << ']' << endl;
			for (int valuenum = 0; valuenum <= keys[keynum].names.GetUpperBound(); valuenum++)
			{
//				inifile << keys[keynum].names[valuenum] << "=" << keys[keynum].values[valuenum];
				temp=keys[keynum].names[valuenum] + "=" + keys[keynum].values[valuenum]+"\r\n";
				file.Write(temp,temp.GetLength());
				if (valuenum != keys[keynum].names.GetUpperBound())
				{
//					inifile << endl;
					temp="\r\n";
					file.Write(temp,temp.GetLength());

				}
				else
					if (keynum < names.GetSize())
					{
//						inifile << endl;
					temp="\r\n";
					file.Write(temp,temp.GetLength());
					}
			}
			if (keynum < names.GetSize())
			{
//				inifile << endl;
				temp="\r\n";
				file.Write(temp,temp.GetLength());
			}
		}
	}
	file.Close();
}

//deletes all stored ini data
void CIniFile::Reset()
{
	keys.SetSize(0);
	names.SetSize(0);
}

//returns number of keys currently in the ini
int CIniFile::GetNumKeys()
{
	return keys.GetSize();
}

//returns number of values stored for specified key, or -1 if key found
int CIniFile::GetNumValues(CString keyname)
{
	int keynum = FindKey(keyname);
	if (keynum == -1)
		return -1;
	else
		return keys[keynum].names.GetSize();
}

//gets value of [keyname] valuename = 
//overloaded to return CString, int, and double
CString CIniFile::GetValue(CString keyname, CString valuename)
{
	int keynum = FindKey(keyname), valuenum = FindValue(keynum,valuename);

	if (keynum == -1)
	{
		error = "Unable to locate specified key.";
		return "";
	}

	if (valuenum == -1)
	{
		error = "Unable to locate specified value.";
		return "";
	}
	return keys[keynum].values[valuenum];
}

//gets value of [keyname] valuename = 
//overloaded to return CString, int, and double
int CIniFile::GetValueI(CString keyname, CString valuename)
{
	return atoi(GetValue(keyname,valuename));
}

//gets value of [keyname] valuename = 
//overloaded to return CString, int, and double
double CIniFile::GetValueF(CString keyname, CString valuename)
{
	return atof(GetValue(keyname, valuename));
}

//sets value of [keyname] valuename =.
//specify the optional paramter as false (0) if you do not want it to create
//the key if it doesn't exist. Returns true if data entered, false otherwise
//overloaded to accept CString, int, and double
bool CIniFile::SetValue(CString keyname, CString valuename, CString value, bool create)
{
	int keynum = FindKey(keyname), valuenum = 0;
	//find key
	if (keynum == -1) //if key doesn't exist
	{
		if (!create) //and user does not want to create it,
			return 0; //stop entering this key
		names.SetSize(names.GetSize()+1);
		keys.SetSize(keys.GetSize()+1);
		keynum = names.GetSize()-1;
		names[keynum] = keyname;
	}

	//find value
	valuenum = FindValue(keynum,valuename);
	if (valuenum == -1)
	{
		if (!create)
			return 0;
		keys[keynum].names.SetSize(keys[keynum].names.GetSize()+1);
		keys[keynum].values.SetSize(keys[keynum].names.GetSize()+1);
		valuenum = keys[keynum].names.GetSize()-1;
		keys[keynum].names[valuenum] = valuename;
	}
	keys[keynum].values[valuenum] = value;
	return 1;
}

//sets value of [keyname] valuename =.
//specify the optional paramter as false (0) if you do not want it to create
//the key if it doesn't exist. Returns true if data entered, false otherwise
//overloaded to accept CString, int, and double
bool CIniFile::SetValueI(CString keyname, CString valuename, int value, bool create)
{
	CString temp;
	temp.Format("%d",value);
	return SetValue(keyname, valuename, temp, create);
}

//sets value of [keyname] valuename =.
//specify the optional paramter as false (0) if you do not want it to create
//the key if it doesn't exist. Returns true if data entered, false otherwise
//overloaded to accept CString, int, and double
bool CIniFile::SetValueF(CString keyname, CString valuename, double value, bool create)
{
	CString temp;
	temp.Format("%e",value);
	return SetValue(keyname, valuename, temp, create);
}

//deletes specified value
//returns true if value existed and deleted, false otherwise
bool CIniFile::DeleteValue(CString keyname, CString valuename)
{
	int keynum = FindKey(keyname), valuenum = FindValue(keynum,valuename);
	if (keynum == -1 || valuenum == -1)
		return 0;

	keys[keynum].names.RemoveAt(valuenum);
	keys[keynum].values.RemoveAt(valuenum);
	return 1;
}

//deletes specified key and all values contained within
//returns true if key existed and deleted, false otherwise
bool CIniFile::DeleteKey(CString keyname)
{
	int keynum = FindKey(keyname);
	if (keynum == -1)
		return 0;
	keys.RemoveAt(keynum);
	names.RemoveAt(keynum);
	return 1;
}

/////////////////////////////////////////////////////////////////////
// Private Functions
/////////////////////////////////////////////////////////////////////

//returns index of specified key, or -1 if not found
int CIniFile::FindKey(CString keyname)
{
	int keynum = 0;
	while ( keynum < keys.GetSize() && names[keynum] != keyname)
		keynum++;
	if (keynum == keys.GetSize())
		return -1;
	return keynum;
}

//returns index of specified value, in the specified key, or -1 if not found
int CIniFile::FindValue(int keynum, CString valuename)
{
	if (keynum == -1)
		return -1;
	int valuenum = 0;
	while (valuenum < keys[keynum].names.GetSize() && keys[keynum].names[valuenum] != valuename)
		valuenum++;
	if (valuenum == keys[keynum].names.GetSize())
		return -1;
	return valuenum;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷综合在线观看| 亚洲成人精品一区二区| 精品国产电影一区二区 | 欧美一区二区三区免费| 色婷婷亚洲精品| 91亚洲精品久久久蜜桃| 94-欧美-setu| 色88888久久久久久影院野外| av在线综合网| 在线观看视频一区| 一本大道久久a久久综合| 91黄色激情网站| 欧美视频三区在线播放| 欧美人与z0zoxxxx视频| 欧美日韩国产成人在线免费| 91麻豆精品国产自产在线观看一区| 欧美人牲a欧美精品| 国产一区二区免费视频| 久久精品欧美一区二区三区麻豆| 精品久久久三级丝袜| 久久婷婷综合激情| 亚洲欧美偷拍三级| 日本不卡在线视频| 91在线你懂得| 成人爽a毛片一区二区免费| 99久久精品国产网站| 欧美日韩一区三区四区| 精品少妇一区二区三区在线播放 | 亚洲精品免费在线播放| 99re热视频精品| 欧美日韩亚洲综合| 久久免费看少妇高潮| 亚洲欧美日韩国产中文在线| 亚洲国产日韩a在线播放性色| 青青草97国产精品免费观看无弹窗版 | 精品久久久影院| 综合精品久久久| 免费高清视频精品| 91在线精品一区二区| 日韩色视频在线观看| 成人欧美一区二区三区白人| 日韩电影在线一区| 91网站最新地址| 久久网站最新地址| 日韩激情在线观看| 一本色道**综合亚洲精品蜜桃冫 | 国产制服丝袜一区| 欧美日韩第一区日日骚| 中文字幕免费在线观看视频一区| 日韩专区一卡二卡| 91香蕉国产在线观看软件| 久久久电影一区二区三区| 亚洲超丰满肉感bbw| 成人网在线免费视频| 日韩小视频在线观看专区| 亚洲综合色噜噜狠狠| 懂色av一区二区三区免费看| 日韩一区二区精品在线观看| 亚洲一区二区三区四区在线免费观看 | 视频一区欧美精品| 欧美三片在线视频观看| 久久久久久久网| 青青草成人在线观看| 在线视频国内自拍亚洲视频| 国产精品国产三级国产专播品爱网| 日韩国产欧美在线观看| 欧美午夜一区二区三区| 成人免费在线视频观看| 成人性生交大片免费看中文| 国产日产精品1区| 17c精品麻豆一区二区免费| 麻豆视频一区二区| 4438x成人网最大色成网站| 亚洲电影在线免费观看| 91久久免费观看| 成人性视频网站| 久久人人97超碰com| 天天综合日日夜夜精品| 色久综合一二码| 一区二区三区日韩精品视频| 成人av资源下载| 一区视频在线播放| 91网页版在线| 亚洲图片欧美一区| 欧美日韩五月天| 免费在线观看一区| 久久一留热品黄| 成人激情av网| 亚洲精品高清视频在线观看| 欧美性大战久久| 老鸭窝一区二区久久精品| 蜜桃视频在线观看一区| 日韩精品中文字幕一区二区三区| 麻豆精品精品国产自在97香蕉| 精品嫩草影院久久| 丁香天五香天堂综合| 亚洲特级片在线| 欧美性一区二区| 裸体歌舞表演一区二区| 国产亚洲成年网址在线观看| 91在线国内视频| 日韩国产精品久久| 国产色产综合产在线视频| av动漫一区二区| 日韩avvvv在线播放| 久久久久久亚洲综合影院红桃| 91日韩精品一区| 美腿丝袜亚洲综合| 国产精品二区一区二区aⅴ污介绍| 色天天综合色天天久久| 日韩精品欧美成人高清一区二区| 国产亚洲欧洲997久久综合| 91亚洲国产成人精品一区二三| 午夜久久电影网| 日本一区二区三区在线不卡| 在线观看欧美黄色| 国产成人鲁色资源国产91色综 | 欧美一区欧美二区| 成人亚洲一区二区一| 日日噜噜夜夜狠狠视频欧美人| 国产欧美一区二区精品婷婷| 欧美高清一级片在线| 不卡在线观看av| 久久99精品久久只有精品| 一区二区三区小说| 国产视频在线观看一区二区三区| 欧美视频一区二区在线观看| 国产成a人亚洲| 免费看黄色91| 一区二区三区欧美亚洲| 中文字幕欧美激情一区| 欧美成人激情免费网| 91高清视频免费看| 大白屁股一区二区视频| 久久激五月天综合精品| 午夜精品久久久久影视| 亚洲欧美日韩在线| 国产日韩欧美综合一区| 日韩欧美一区中文| 欧美电影在哪看比较好| 欧美日精品一区视频| 91最新地址在线播放| 成人综合激情网| 国产精品一区二区91| 韩国一区二区在线观看| 麻豆久久久久久| 日本欧美一区二区三区乱码| 亚洲国产日韩综合久久精品| 一区二区成人在线观看| 亚洲黄色免费电影| 亚洲精选视频在线| 亚洲综合一区二区三区| 亚洲综合久久久久| 亚洲国产精品久久久久秋霞影院 | 欧美年轻男男videosbes| 欧美主播一区二区三区| 在线精品视频一区二区三四| 在线国产亚洲欧美| 欧美日韩精品电影| 日韩一区二区三区在线观看| 91麻豆精品国产91久久久久| 日韩一区二区在线观看视频| 精品成人在线观看| 久久精品人人做人人综合| 国产精品视频第一区| 一区二区三区四区在线播放| 亚洲一区二区三区影院| 香蕉av福利精品导航| 久久精品国产澳门| 国产精品自拍三区| 99精品久久久久久| 欧美三级三级三级| 精品嫩草影院久久| 国产精品美女久久久久久久久久久| 国产欧美一区二区精品忘忧草| 亚洲人成在线播放网站岛国| 亚洲成人高清在线| 狠狠色丁香久久婷婷综合_中 | 狠狠色狠狠色综合| 91猫先生在线| 日韩亚洲欧美综合| 国产精品久久久久久亚洲伦| 亚洲免费av在线| 国模冰冰炮一区二区| 色综合夜色一区| 欧美一区二区啪啪| 日韩伦理免费电影| 六月丁香综合在线视频| a在线播放不卡| 日韩欧美一二三区| 一区二区久久久| 国产一区二区成人久久免费影院| 99久精品国产| 久久综合五月天婷婷伊人| 亚洲女人的天堂| 国产精品一区在线| 在线不卡中文字幕| 亚洲色图欧美激情| 国产一区二区三区最好精华液| eeuss鲁一区二区三区|