探讨个ini文件的读写问题

cyd411 2008-11-17 08:17:56

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
....


1.这个ini文件有没有语法规范
2.问个大家的经验之谈,我现在读取这个ini文件用的是i/o里面的read那个,这个只能读一行
我想读timeout=30,就必须先多发一条空指令掠过[boot loader]这行感觉这样控制很难受
大家有没有好的方法解决这个问题?
...全文
130 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmgwolf042 2008-11-19
  • 打赏
  • 举报
回复
支持楼主使用XML文件,读取方便,编辑起来也方便。xmldocment可以对XML实现完美读取,也可以吧XML作为一个数据库表来使用,并读取的。
power401102 2008-11-19
  • 打赏
  • 举报
回复
这是个xmlToTxt的部分代码,lz可以参考一下
power401102 2008-11-19
  • 打赏
  • 举报
回复
Imports System.Xml

Public Class Form1
' Let the user select an XML file.
Private Sub btnSelectFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectFile.Click
If dlgXmlFile.ShowDialog() = Windows.Forms.DialogResult.OK Then
txtFile.Text = dlgXmlFile.FileName
End If
End Sub

Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
' Load and parse the XML file.
Dim root_node As DocNode = ParseXmlDocument(txtFile.Text)

' Sort the nodes' children.
root_node.SortChildren()

' Display the result.
txtResults.Text = root_node.PrefixOrder()
End Sub

' Parse the XML document.
Private Function ParseXmlDocument(ByVal file_name As String) As DocNode
' Load the XML file.
Dim xml_doc As New XmlDocument()
xml_doc.Load(file_name)

' Find the <assembly> node.
Dim assembly_node As XmlNode = xml_doc.DocumentElement.Item("assembly")

' Get the <name> value.
Dim root As New DocNode(assembly_node, assembly_node.Item("name").InnerText.Trim, "A")

' Add the <members> to the root node.
Dim members_node As XmlNode = xml_doc.DocumentElement.Item("members")
For Each member As XmlNode In members_node.ChildNodes
' Make the child node.
Dim full_name As String = member.Attributes("name").Value
Debug.Assert(full_name.Contains(":"), "Member node's name does not contain ':'")
Dim type_code As String = full_name.Substring(0, full_name.IndexOf(":"))
full_name = full_name.Substring(full_name.IndexOf(":") + 1)
Dim child_node As New DocNode(member, full_name, type_code)

' Add the child to the root node.
root.AddChild(child_node)
Next member

Return root
End Function
End Class
yanlongwuhui 2008-11-18
  • 打赏
  • 举报
回复
自己用配置文件还是XML格式的比较方便,如果是要对INI文件进行读取,可以通过API函数(WritePrivateProfileString、GetPrivateProfileString等)进行读写
lkclover 2008-11-17
  • 打赏
  • 举报
回复
我也用xml的,写代码方便.
Fibona 2008-11-17
  • 打赏
  • 举报
回复
XmlDocment doc=new XmlDocument();
doc.Load("path\aa.xml");

XmlNode node=doc.SelectSingleNode(@"第一级节点名称/第二级直至所在节点名称/"); //@result/item得到值1111111

if(node!=null)
{

string value=node.Value;//直接获取到值<xml><result><item>111</item></result>
}

也可以在这样的结点中,可以通过属性来获取对应的值<item name="fibona" value="测试"/>

string name=node.Attributes.GetNamedItem("name");

或者循环编历属性得到对应的属性值,

cyd411 2008-11-17
  • 打赏
  • 举报
回复
读取xml用什么实现,简单的说下,谢谢我好查这方面的资料
Fibona 2008-11-17
  • 打赏
  • 举报
回复
ini文件,可以通过专门的读取ini的方法,

最简单的自己实现就是一行行的读取,或者全读取到一个字符串,然后用查找的字符串的方式进行解决,我以前就是这么用,不过现在一般通过xml文档来实现,这样速度有优秀,可以直接在xmlDocument里面查找对应的节点,并取得对应的值

flyseagod 2008-11-17
  • 打赏
  • 举报
回复
补充一下,其中的load就是你例子中的boot loader, an就是 timeout及default等,没有配置是读不到an时取的默认值,xuhao读出来的就是30
flyseagod 2008-11-17
  • 打赏
  • 举报
回复
ini有规范的,有专门的函数可以读取,很方便的,不用像读TXT文本文件那样判断的。给你个可用的例子。
声明
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
代码
dim xuhao as string
xuhao=space(255)
GetPrivateProfileString "load", "an", "没有配置", xuhao, 255, App.Path & "\Style.ini"
msgbox xuhao

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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