C#2005 无外部Dll调用书写 Ini配置文件原代码.

wlllll 2008-04-16 09:47:55

using System;
using System.IO;
using System.Windows.Forms;
using System.Text;
using System.Text.RegularExpressions;


public class InstallIni {
///<summary>设置Ini文件路径</summary>
public String Files {
get { return AttrFiles; }
set {
AttrFiles = value;
if ( File.Exists(AttrFiles) ) {
Open();
} else {
FilesText = "";
}
}
}
public String AttrFiles = "";
///<summary>Ini文件所有内容</summary>
public String FilesText {
get { return AttrFilesText; }
set { AttrFilesText = value; }
}
public String AttrFilesText = "";




///<summary>创建与Exe文件名相同的Ini文件</summary>
public InstallIni() {
String HaFile = Application.ExecutablePath;
HaFile = new Regex(@"\\[^\\]*$").Match(HaFile).Value;
HaFile = new Regex(@"(^\\)|(\.(.*?)$)").Replace(HaFile, "");
HaFile = HaFile + ".Ini";
Files = HaFile;
}
///<summary>创建指定路径文件名Ini文件</summary>
public InstallIni(String DataFile) {
Files = DataFile;
}

///<summary>设置内容文件值</summary>
public void Set(String DataSet, String DataName, String DataValue) {
String HaValue = DataName + "=" + DataValue.Replace("\n", @"\n");
Match HaMatchSet = new Regex(@"(^|\n)\[" + DataSet + @"\]\n(.|\n)*?($|(?=\n\[))").Match(FilesText);
if ( HaMatchSet.Success ) {
Match HaMatchName = new Regex(@"(^|\n)" + DataName + @"=.*?($|\n)").Match(HaMatchSet.Value);
if ( HaMatchName.Success ) {
if ( HaValue != "" ) {
HaValue = ( new Regex(@"^\n").Match(HaMatchName.Value).Success ) ? "\n" + HaValue : HaValue;
HaValue = ( new Regex(@"\n$").Match(HaMatchName.Value).Success ) ? HaValue + "\n" : HaValue;
FilesText = FilesText.Substring(0, HaMatchSet.Index + HaMatchName.Index) + HaValue + FilesText.Substring(HaMatchSet.Index + HaMatchName.Index + HaMatchName.Length);
} else {
FilesText = FilesText.Substring(0, HaMatchSet.Index + HaMatchName.Index) + FilesText.Substring(HaMatchSet.Index + HaMatchName.Index + HaMatchName.Length);
}
return;
}
if ( DataValue != "" ) {
HaValue = ( new Regex(@"\n$").Match(HaMatchSet.Value).Success ) ? HaValue : "\n" + HaValue;
FilesText = FilesText.Substring(0, HaMatchSet.Index + HaMatchSet.Length) + HaValue + FilesText.Substring(HaMatchSet.Index + HaMatchSet.Length);
} else {
FilesText = FilesText.Substring(0, HaMatchSet.Index + HaMatchSet.Length) + FilesText.Substring(HaMatchSet.Index + HaMatchSet.Length);
}
return;
}
if ( DataValue != "" ) {
String HaSet = "[" + DataSet + "]\n";
if ( FilesText != "" ) {
HaSet = ( new Regex(@"\n$").Match(FilesText).Success ) ? HaSet : "\n" + HaSet;
}
FilesText += HaSet + HaValue;
Console.WriteLine(FilesText + "\n" + System.DateTime.Now + ":" + System.DateTime.Now.Millisecond);
return;
}
}

///<summary>获取内容文件值</summary>
public String Get(String DataSet, String DataName) {
String Result = "";
try {
Result = FilesText;
Result = new Regex(@"(^|\n)\[" + DataSet + @"\]\n(.|\n)*?($|(?=\n\[))").Match(Result).Value;
Result = new Regex(@"(^|\n)" + DataName + @"=.*?($|\n)").Match(Result).Value;
Result = new Regex("^\n*" + DataName + "=|\n*$").Replace(Result, "");
Result = new Regex(@"\n").Replace(Result, "\n");
} catch {
Result = "";
}
return Result;
}

///<summary>重新打开配置文件</summary>
public void Open() {
for ( Int32 i = 0; i < 10; i++ ) {
try {
if ( File.Exists(AttrFiles) ) {
using ( FileStream FileStreams = new FileStream(AttrFiles, FileMode.Open) ) {
Byte[] HaByte = new Byte[(Int32)FileStreams.Length];
FileStreams.Read(HaByte, 0, (Int32)FileStreams.Length);
FilesText = Encoding.Default.GetString(HaByte, 0, HaByte.Length);
FilesText = new Regex(@"(\r|\n){2}|(\r|\n){1}").Replace(FilesText, "\n");
}
return;
}else{
FilesText = "";
}
} catch {
System.Threading.Thread.Sleep(200);
}
}
MessageBox.Show("读取配置文件失败." + AttrFiles);
}

///<summary>写入配置文件</summary>
public void Write() {
for ( Int32 i = 0; i < 10; i++ ) {
try {
using ( FileStream FileStreams = new FileStream(AttrFiles, FileMode.Create) ) {
Byte[] HaByte = Encoding.Default.GetBytes(FilesText.Replace("\n", "\r\n"));
FileStreams.Write(HaByte, 0, HaByte.Length);
}
return;
} catch {
System.Threading.Thread.Sleep(200);
}
}
MessageBox.Show("写入配置文件失败.");
}

///<summary>删除某个组</summary>
public void DelSet(String DataSet) {
Match HaMatchSet = new Regex(@"(^|\n)\[" + DataSet + @"\]\n(.|\n)*?($|(?=\n\[))").Match(FilesText);

String HaText = ( new Regex(@"\n$").Match(HaMatchSet.Value).Success ) ? "\n" : "";

FilesText = FilesText.Substring(0, HaMatchSet.Index) + HaText + FilesText.Substring(HaMatchSet.Index + HaMatchSet.Length);
}
}


...全文
77 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
本课程主要是针对ILRuntime设计一个独立的脚本热更新框,框架的优势:1.将代码热更脱离Assetbundle资源热更,独立的部分更适用于各种不同的框架。2.加快项目的逻辑更新,bug修复.(后期修bug,多数情况下并不用动到资源,只需要更新脚本代码,无需重走资源打包发布流程,大大提升效率)3.提供热更模式和正常开发模式的快速切换接口,可以让队友像平常一样去开发.4.不依赖市面上的任何AB框架,完全兼容市面上各种不同的AB框架.5.重点:希望通过它,帮助你学习、了解ILRuntime真正在项目中的应用.框架的将提供以下这些接口,这些接口将从0开始,在Unity里将C#脚本编译成dll,然后将dll放到服务器上,再将dll下载下来,进行加载,到最后从Unity主工程调用热更新的代码逻辑.1.Create hotfixdll接口将热更部分的代码 编译成dll生成dll版本配置(MD5)2.更新对比接口本地跟服务器的dll进行版本对比3.下载热更dll下载dll本身的文件下载版本记录文件4.加载热更dll加载dll实例化:AppDomain初始化:注册跨域继承适配器注册委托适配器LitJson重定向调用性能优化(CLR绑定功能)调用热更接口Hotfix.HotfixApplication.Main 进入热更逻辑5.ILMonoBehaviour用于监听组件的生命周期,实际是桥接(调用)热更的逻辑AwakeStartEnableUpdateLateUpdate.......6.添加其他常用的库DOTweenLitJsonSpineGoogle.ProtobufTextAnimation可以根据上面的方式,自行添加依赖的库... 
OpenQuant内盘期货插件 ## 目的 将OpenQuant与国内的CTP进行对接,让OpenQuant直接能交易国内期货 ## 设计思路 1. 利用了本开源项目的C-CTP接口,与CSharp-CTP接口 2. C-CTP、CSharp-CTP都以dll方式调用 3. 本插件同时支持QuantDeveloper、OpenQuant2和OpenQuant3(以下分别简称QD、OQ2和OQ3),只要进行再编译即可 4. 为了支持查询合约列表功能,不使用OpenQuant接口,而是使用更底层的SmartQuant接口 ## 如何安装使用 1. 找到SmartQuant接口插件目录C:\Program Files\SmartQuant Ltd\OpenQuant\Framework\bin\ 2. 复制QuantBox.OQ.CTP.dll这个SQ插件,确保此插件的版本正确 3. 找到OpenQuant接口插件目录C:\Program Files\SmartQuant Ltd\OpenQuant\Bin\ 4. 复制thostmduserapi.dll、thosttraderapi.dll两个CTP的dll到此目录 5. 复制QuantBox.C2CTP.dll、QuantBox.CSharp2CTP.dll、QuantBox.Helper.CTP.dll、NLog.dll到此目录 6. 复制CTP.nlog到此目录,或自己修改此文件 7. 找到软件的插件配置文件C:\Documents and Settings\Administrator\Application Data\SmartQuant Ltd\OpenQuant\Framework\ini\framework.xml 8. 添加``到对应位置 9. 如何使用请查看插件的使用说明 ## 如何开发 1. 确保你的C-CTP接口的dll、CSharp-CTP接口等都是最新的 3. 修改引用中有关SmartQuant类库的地址,使用你目标OQ中下的dll 4. 修改.NET框架要使用的版本,QD使用2.0,OQ2使用3.5,OQ3使用4.0 5. 修改dll生成的目录,具体请参考如何安装。 6. 调试只能使用附加到进程,建议学习并使用远程调试 7. 如果插件完全无法加载,请找到对应的log文件,查看日志。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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