導航:首頁 > 版本升級 > ini文件加編碼的代碼

ini文件加編碼的代碼

發布時間:2023-08-13 04:32:53

1. 求VB讀寫INI配置文件的方法代碼。。。

建一個模塊,起名為mINI,保存為「INI文件讀寫模塊.bas」,復制以下代碼:
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Private sPathFile As String

Public Property Get PathFile() As String
Dim sPath As String
If sPathFile = vbNullString Then
sPath = App.Path
If Right(sPath, 1) = "\" Then
sPath = sPath & "\"
End If
PathFile = sPath & App.EXEName & ".ini"
Else
PathFile = sPathFile
End If
End Property
Public Property Let PathFile(sNewPathFile As String)
sPathFile = sNewPathFile
End Property

Public Function GetValue(ByVal sKey As String, Optional ByVal sDefault As String) As String
GetValue = GetValueEx("參數設置", sKey, sDefault)
End Function
Public Function GetValueEx(ByVal sMole As String, ByVal sKey As String, Optional ByVal sDefault As String) As String
GetValueEx = GetValueFromFile(PathFile, sMole, sKey, sDefault)
End Function

Public Function GetValueFromFile(ByVal sFile As String, ByVal sMole As String, ByVal sKey As String, Optional ByVal sDefault As String) As String
Dim sRtn As String
'If (Not Dir(sFile) = vbNullString) And (Not Trim(sFile) = vbNullString) Then
sRtn = Space(255)
GetPrivateProfileString sMole, sKey, sDefault, sRtn, 255, sFile
GetValueFromFile = BTrim(sRtn)
'End If
End Function

Public Function SetValue(ByVal sKey As String, ByVal sValue As String) As Boolean
SetValue = SetValueEx("參數設置", sKey, sValue)
End Function
Public Function SetValueEx(ByVal sMole As String, ByVal sKey As String, ByVal sValue As String) As Boolean
SetValueEx = SetValueToFile(PathFile, sMole, sKey, sValue)
End Function
Public Function SetValueToFile(ByVal sFile As String, ByVal sMole As String, ByVal sKey As String, ByVal sValue As String) As Boolean
SetValueToFile = WritePrivateProfileString(sMole, sKey, sValue, sFile)
End Function

Private Function BTrim(sStr As String) As String
Dim sRtn As String
Dim i As Long
Dim sChar As String

sRtn = sStr
For i = 1 To Len(sStr)
sChar = Mid$(sStr, i, 1)
If sChar = Chr$(0) Then
sRtn = Left$(sStr, i - 1)
Exit For
End If
Next i
sRtn = Trim(sRtn)
BTrim = sRtn
End Function
'裡面的函數能看懂吧?用法和GetSetting、SetSetting基本一樣,區別是需要指定一下ini文件的絕對路徑文件件名。這段程序我用了10多年了,您可放心使用。若有問題可來信 [email protected]

2. C# 讀取ini文件

using System.Runtime.InteropServices; [DllImport("kernel32.dll")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32.dll")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); /// <summary> /// 寫入INI文件 /// </summary> /// <param name=^Section^>節點名稱</param> /// <param name=^Key^>關鍵字</param> /// <param name=^Value^>值</param> /// <param name=^filepath^>INI文件路徑</param> static public void IniWriteValue(string Section, string Key, string Value, string filepath) { WritePrivateProfileString(Section, Key, Value, filepath); } /// <summary> /// 讀取INI文件 /// </summary> /// <param name=^Section^>節點名稱</param> /// <param name=^Key^>關鍵字</param> /// <param name=^filepath^>INI文件路徑</param> /// <returns>值</returns> static public string IniReadValue(string Section, string Key, string filepath) { StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(Section, Key, "", temp,255, filepath); return temp.ToString(); } ini 文檔格式路徑假設為 D:/SETUP.ini [SQL] SVRName=192.168.1.11\SQL2005 讀取實例 IniReadValue("SQL", "SVRName"," D:/SETUP.ini"); 這樣讀取出來的值是192.168.1.11\SQL2005 寫的話類似 IniReadValue("SQL", "SVRName","你要寫入的值"," D:/SETUP.ini"); 補充: using System; using System.IO; using System.Runtime.InteropServices; using System.Text; using System.Collections; using System.Collections.Specialized; namespace wuyisky{ /**//**/ /**//// /// IniFiles的類 /// public class IniFiles { public string FileName; //INI文件名 //聲明讀寫INI文件的API函數 [DllImport("kernel32")] private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath); //類的構造函數,傳遞INI文件名 public IniFiles(string AFileName) { // 判斷文件是否存在 FileInfo fileInfo = new FileInfo(AFileName); //Todo:搞清枚舉的用法 if ((!fileInfo.Exists)) { //|| (FileAttributes.Directory in fileInfo.Attributes)) //文件不存在,建立文件 System.IO.StreamWriter sw = new System.IO.StreamWriter(AFileName, false, System.Text.Encoding.Default); try { sw.Write("#表格配置檔案"); sw.Close(); } catch { throw (new ApplicationException("Ini文件不存在")); } } //必須是完全路徑,不能是相對路徑 FileName = fileInfo.FullName; } //寫INI文件 public void WriteString(string Section, string Ident, string Value) { if (!WritePrivateProfileString(Section, Ident, Value, FileName)) { throw (new ApplicationException("寫Ini文件出錯")); } } //讀取INI文件指定 public string ReadString(string Section, string Ident, string Default) { Byte[] Buffer = new Byte[65535]; int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName); //必須設定0(系統默認的代碼頁)的編碼方式,否則無法支持中文 string s = Encoding.GetEncoding(0).GetString(Buffer); s = s.Substring(0, bufLen); return s.Trim(); } //讀整數 public int ReadInteger(string Section, string Ident, int Default) { string intStr = ReadString(Section, Ident, Convert.ToString(Default)); try { return Convert.ToInt32(intStr); } catch (Exception ex) { Console.WriteLine(ex.Message); return Default; } } //寫整數 public void WriteInteger(string Section, string Ident, int Value) { WriteString(Section, Ident, Value.ToString()); } //讀布爾 public bool ReadBool(string Section, string Ident, bool Default) { try { return Convert.ToBoolean(ReadString(Section, Ident, Convert.ToString(Default))); } catch (Exception ex) { Console.WriteLine(ex.Message); return Default; } } //寫Bool public void WriteBool(string Section, string Ident, bool Value) { WriteString(Section, Ident, Convert.ToString(Value)); } //從Ini文件中,將指定的Section名稱中的所有Ident添加到列表中 public void ReadSection(string Section, StringCollection Idents) { Byte[] Buffer = new Byte[16384]; //Idents.Clear(); int bufLen = GetPrivateProfileString(Section, null, null, Buffer, Buffer.GetUpperBound(0), FileName); //對Section進行解析 GetStringsFromBuffer(Buffer, bufLen, Idents); } private void GetStringsFromBuffer(Byte[] Buffer, int bufLen, StringCollection Strings) { Strings.Clear(); if (bufLen != 0) { int start = 0; for (int i = 0; i bufLen; i++) { if ((Buffer[i] == 0) && ((i - start) > 0)) { String s = Encoding.GetEncoding(0).GetString(Buffer, start, i - start); Strings.Add(s); start = i + 1; } } } } //從Ini文件中,讀取所有的Sections的名稱 public void ReadSections(StringCollection SectionList) { //Note:必須得用Bytes來實現,StringBuilder只能取到第一個Section byte[] Buffer = new byte[65535]; int bufLen = 0; bufLen = GetPrivateProfileString(null, null, null, Buffer, Buffer.GetUpperBound(0), FileName); GetStringsFromBuffer(Buffer, bufLen, SectionList); } //讀取指定的Section的所有Value到列表中 public void ReadSectionValues(string Section, NameValueCollection Values) { StringCollection KeyList = new StringCollection(); ReadSection(Section, KeyList); Values.Clear(); foreach (string key in KeyList) { Values.Add(key, ReadString(Section, key, "")); } } /**/////讀取指定的Section的所有Value到列表中, //public void ReadSectionValues(string Section, NameValueCollection Values,char splitString) //{ string sectionValue; // string[] sectionValueSplit; // StringCollection KeyList = new StringCollection(); // ReadSection(Section, KeyList); // Values.Clear(); // foreach (string key in KeyList) // { // sectionValue=ReadString(Section, key, ""); // sectionValueSplit=sectionValue.Split(splitString); // Values.Add(key, sectionValueSplit[0].ToString(),sectionValueSplit[1].ToString()); // } //} //清除某個Section public void EraseSection(string Section) { // if (!WritePrivateProfileString(Section, null, null, FileName)) { throw (new ApplicationException("無法清除Ini文件中的Section")); } } //刪除某個Section下的鍵 public void DeleteKey(string Section, string Ident) { WritePrivateProfileString(Section, Ident, null, FileName); } //Note:對於Win9X,來說需要實現UpdateFile方法將緩沖中的數據寫入文件 //在Win NT, 2000和XP上,都是直接寫文件,沒有緩沖,所以,無須實現UpdateFile //執行完對Ini文件的修改之後,應該調用本方法更新緩沖區。 public void UpdateFile() { WritePrivateProfileString(null, null, null, FileName); } //檢查某個Section下的某個鍵值是否存在 public bool ValueExists(string Section, string Ident) { // StringCollection Idents = new StringCollection(); ReadSection(Section, Idents); return Idents.IndexOf(Ident) > -1; } //確保資源的釋放 ~IniFiles() { UpdateFile(); } } }

3. C# 讀ini文件讀出來的是亂碼 怎麼解決

<globalization
requestEncoding="GB2312"
responseEncoding="GB2312"
fileEncoding="GB2312"
/>
你看一下有沒有類似於以上設置,出現亂碼是因為你讀取文件的編碼設置和你讀取文件編專碼設置不屬一樣
例如,上邊是我在。net中設置的,他讀取文件採用gb2312,如果你的文件使用utf-8的話,讀出來就是亂碼

4. c# winform 創建ini文件 看詳細介紹

FileStream filest = new FileStream(@"c:\abc.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite); //指定操作系統應打開文件(如果文件存在);否則,應創建新文件。
如果你INI文件需要有初始內容,那麼單獨判斷該文件是否存在,如果不存在,就單獨初始創建一個模板格式的INI。

StreamReader sr = new StreamReader(filest,Encoding.GetEncoding("gb2312"));

gb2312 是編碼格式。支持文本中的簡體中文。

5. 批處理修改ini文件的內容

不清楚你的實際文件/情況,僅以問題中的樣例說明及猜測為據;以下代碼復制粘貼到記事本,另存為xx.bat,編碼選ANSI,跟要處理的文件放一起雙擊運行

@echooff&cd/d"%~dp0"
rem修改一個ini文件里的指定行內容
set#=Anyquestions&set_=WX&set$=Q&set/az=0x53b7e0b4
title%#%+%$%%$%/%_%%z%
set"inifile=a.ini"
ifnotexist"%inifile%"(echo;"%inifile%"patherrorornotexists&pause&exit)
setuser=&set/puser=entertheuser:
setlinenum=&for/f"delims=:"%%ain('type"%inifile%"^|findstr/nb/c:"user="')doset"linenum=%%a"
ifdefinedlinenum(
for/f"tokens=1*delims=:"%%ain('type"%inifile%"^|findstr/n.*')do(
if"%%a"equ"%linenum%"(
echo;user=%user%
)elseecho;%%b
)
)
echo;%#%+%$%%$%/%_%%z%
pause
exit

6. 求紅警2尤里的復仇(RA2MD)rulesmd.ini中的代碼

剛剛研究了一陣,終於明白了! 很簡單!
第一步:新建一個本文文檔
第二步:打開它,將以下代碼復制進去:

; Multiplayer Game Mode Rules.INI override
; Mode == Team Game
; This file must exist to satisfy the Multiplayer Game Mode system

; Team Game is where players should join teams before starting a game, because of the map types.
; there are no real changes in this mode.

[MultiplayerDialogSettings]
AlliesAllowed=yes
AllyChangeAllowed=no
MustAlly=no
寫好後,保存。然後最重要的,將這個文件名字改為mpteammd.ini名字一定要正確,最重要是後綴名「ini」。建議在我的電腦——(在上方)工具——文件夾選項——查看中找到 「隱藏文件類型擴展名 」,把前面的對號去掉,確定。在「小隊聯盟」中就可以選擇隨機小隊,也就是「---」了。

閱讀全文

與ini文件加編碼的代碼相關的資料

熱點內容
linuxadb最新 瀏覽:120
密碼md5知乎 瀏覽:1
cad繪圖簡易入門教程 瀏覽:628
qq影音在win10閃退 瀏覽:642
去哪裡練習編程 瀏覽:818
wifl密碼速查器下載 瀏覽:759
光釺貓怎麼連接網路 瀏覽:10
動漫喵app下載 瀏覽:204
ios開發獲取程序版本號 瀏覽:34
百度搜索怎麼關閉APP下載 瀏覽:243
安卓手機開發的信息 瀏覽:555
怎麼把字幕文件和視頻 瀏覽:78
外國人都在看什麼app 瀏覽:463
編程舞台中x是什麼 瀏覽:903
得物app中簽後賣什麼價格 瀏覽:952
proe如何另存格式文件格式 瀏覽:278
如何快速有效的翻譯英文網站 瀏覽:362
醫療文件在哪裡下載 瀏覽:65
南方傳媒網是什麼類型的網站 瀏覽:981
dos里編的匯編文件存在哪裡 瀏覽:799

友情鏈接