---恢复内容开始---
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Runtime.InteropServices; 7 8 namespace INI 9 { 10 public class TINI : IDisposable 11 { 12 [DllImport("kernel32")] 13 private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); 14 [DllImport("kernel32")] 15 private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); 16 17 private bool bDisposed = false; 18 private string _FilePath = string.Empty; 19 public string FilePath 20 { 21 get 22 { 23 if (_FilePath == null) 24 return string.Empty; 25 else 26 return _FilePath; 27 } 28 29 set 30 { 31 if (_FilePath != value) 32 _FilePath = value; 33 } 34 35 } 36 37 public TINI(string path) 38 { 39 _FilePath = path; 40 } 41 42 ~TINI() 43 { 44 Dispose(false); 45 } 46 47 public void Dispose() 48 { 49 50 Dispose(true); 51 GC.SuppressFinalize(this); 52 } 53 54 protected virtual void Dispose(bool IsDisposing) 55 { 56 if (bDisposed) 57 { 58 return; 59 } 60 61 if (IsDisposing) 62 { 63 //补充 64 //这里释放实体 IDisposable 的物件 65 //ex: DataSet DS = new DataSet(); 66 //可在这里 使用 DS.Dispose(); 67 //或是 DS = null; 68 //或是释放自定义的物件。 69 } 70 bDisposed = true; 71 72 } 73 74 /// <summary> 75 /// 設定 KeyValue 值。 76 /// </summary> 77 /// <param name="IN_Section">Section。</param> 78 /// <param name="IN_Key">Key。</param> 79 /// <param name="IN_Value">Value。</param> 80 public void setKeyValue(string IN_Section, string IN_Key, string IN_Value) 81 { 82 WritePrivateProfileString(IN_Section, IN_Key, IN_Value, this._FilePath); 83 84 } 85 86 public void setKeyValue(string IN_Section, string IN_Key, int IN_Value) 87 { 88 WritePrivateProfileString(IN_Section, IN_Key, Convert.ToString(IN_Value), this._FilePath); 89 90 } 91 92 public void setKeyValue(string IN_Section, string IN_Key, double IN_Value) 93 { 94 WritePrivateProfileString(IN_Section, IN_Key, Convert.ToString(IN_Value), this._FilePath); 95 96 } 97 98 /// <summary> 99 /// 取得 Key 相對的 Value 值。 100 /// </summary> 101 /// <param name="IN_Section">Section。</param> 102 /// <param name="IN_Key">Key。</param> 103 public string getKeyValue(string IN_Section, string IN_Key) 104 { 105 StringBuilder temp = new StringBuilder(255); 106 int i = GetPrivateProfileString(IN_Section, IN_Key, "", temp, 255, this._FilePath); 107 return temp.ToString(); 108 } 109 110 /// <summary> 111 /// 取得 Key 相對的 Value 值,若沒有則使用預設值(DefaultValue)。 112 /// </summary> 113 /// <param name="Section">Section。</param> 114 /// <param name="Key">Key。</param> 115 /// <param name="DefaultValue">DefaultValue。</param> 116 public string getKeyValue(string Section, string Key, string DefaultValue) 117 { 118 StringBuilder sbResult = null; 119 try 120 { 121 sbResult = new StringBuilder(255); 122 GetPrivateProfileString(Section, Key, "", sbResult, 255, this._FilePath); 123 return (sbResult.Length > 0) ? sbResult.ToString() : DefaultValue; 124 } 125 catch 126 { 127 return string.Empty; 128 } 129 130 } 131 132 } 133 134 }
---恢复内容结束---