2012年1月12日 星期四

Vb.Net 讀取ini檔

Vb.Net 讀取ini檔範例
首先建立ini檔案

[City]
City_1=台北
City_2=台中
City_3=高雄

[food]
food_1=米
food_2=水果
food_3=大麥

[goods]
goods_1=汽車
goods_2=貨輪
goods_3=飛機

範例程式如下:(VB2005)
Imports System.Text
Imports System.Runtime.InteropServices

Public Class Form1

    '2.宣告方法:
        '* lpAppName:指向包含Section 名稱的字符串地址
        '* lpKeyName:指向包含Key 名稱的字符串地址
        '* lpDefault:如果Key 值沒有找到,缺省返回缺省的字符串
        '* lpReturnedString:用於保存返回字符串的緩衝區
        '* nSize: 緩衝區的長度
        '* lpFileName :ini 文件的文件名
    Public Declare Function GetPrivateProfileString Lib "kernel32" _
     Alias "GetPrivateProfileStringA" ( _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpApplicationName As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpKeyName As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpDefault As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpReturnedString As StringBuilder, _
     ByVal nSize As UInt32, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpFileName As String) As UInt32
    Public Declare Function WritePrivateProfileString Lib "kernel32" _
     Alias "WritePrivateProfileStringA" ( _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpApplicationName As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpKeyName As String, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpReturnedString As StringBuilder, _
     <MarshalAs(UnmanagedType.LPStr)> ByVal lpFileName As String) As UInt32

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        '3.使用方式:
        '讀出ini檔,區段裡的值:
        Dim sKeyValue As New StringBuilder(1024)
        Dim nSize As UInt32 = Convert.ToUInt32(1024)
        Dim sinifilename As String = Application.StartupPath & "\\test.ini"
        '參數一 Section Name
        '參數二 於.ini中的項目
        '參數三 項目的內容
        '參數四 .ini檔的名稱
        '參數五 大小
        '參數六 路徑
        GetPrivateProfileString("City", "City_1", "", sKeyValue, nSize, sinifilename)
        Label1.Text = sKeyValue.ToString

        GetPrivateProfileString("City", "City_2", "", sKeyValue, nSize, sinifilename)
        Label2.Text = sKeyValue.ToString

        GetPrivateProfileString("City", "City_3", "", sKeyValue, nSize, sinifilename)
        Label3.Text = sKeyValue.ToString

        GetPrivateProfileString("food", "food_1", "", sKeyValue, nSize, sinifilename)
        Label4.Text = sKeyValue.ToString

        GetPrivateProfileString("food", "food_2", "", sKeyValue, nSize, sinifilename)
        Label5.Text = sKeyValue.ToString

        GetPrivateProfileString("food", "food_3", "", sKeyValue, nSize, sinifilename)
        Label6.Text = sKeyValue.ToString



        GetPrivateProfileString("goods", "goods_2", "", sKeyValue, nSize, sinifilename)
        'Label8.Text = sKeyValue.ToString

        GetPrivateProfileString("goods", "goods_3", "", sKeyValue, nSize, sinifilename)
        'Label9.Text = sKeyValue.ToString
    End Sub


    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Dim sKeyValue As New StringBuilder(1024)
        Dim nSize As UInt32 = Convert.ToUInt32(1024)
        Dim sinifilename As String = Application.StartupPath & "\\test.ini"

        GetPrivateProfileString("goods", "goods_1", "", sKeyValue, nSize, sinifilename)
        'Label7.Text = sKeyValue.ToString

        Dim drawstring1 = "F1"
        Dim drawstring2 = sKeyValue.ToString
        Dim x1 = 0, y1 = 0, x2 = 8, y2 = 15    '定義字體左上角位置
        Dim drawfont1 As New Font("Helvetica", 11, FontStyle.Bold)    '定義字型
        Dim drawfont2 As New Font("Microsoft JhengHei", 13, FontStyle.Bold)    '定義字型

        PictureBox1.BackColor = Color.FromArgb(0, 136, 254)
        Dim mycolor1 As New SolidBrush(Color.FromArgb(255, 255, 255))    '定義字體顏色
        Dim mycolor2 As New SolidBrush(Color.FromArgb(255, 255, 255))    '定義字體顏色
        e.Graphics.DrawString(drawstring1, drawfont1, mycolor1, x1, y1)
        e.Graphics.DrawString(drawstring2, drawfont2, mycolor2, x2, y2)
    End Sub

    Private Sub PictureBox2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint
        Dim sKeyValue As New StringBuilder(1024)
        Dim nSize As UInt32 = Convert.ToUInt32(1024)
        Dim sinifilename As String = Application.StartupPath & "\\test.ini"

        GetPrivateProfileString("goods", "goods_2", "", sKeyValue, nSize, sinifilename)
        'Label7.Text = sKeyValue.ToString

        Dim drawstring1 = "F2"
        Dim drawstring2 = sKeyValue.ToString
        Dim x1 = 0, y1 = 0, x2 = 8, y2 = 15    '定義字體左上角位置
        Dim drawfont1 As New Font("Helvetica", 11, FontStyle.Bold)    '定義字型
        Dim drawfont2 As New Font("Microsoft JhengHei", 13, FontStyle.Bold)    '定義字型

        PictureBox2.BackColor = Color.FromArgb(0, 136, 254)
        Dim mycolor1 As New SolidBrush(Color.FromArgb(255, 255, 255))    '定義字體顏色
        Dim mycolor2 As New SolidBrush(Color.FromArgb(255, 255, 255))    '定義字體顏色
        e.Graphics.DrawString(drawstring1, drawfont1, mycolor1, x1, y1)
        e.Graphics.DrawString(drawstring2, drawfont2, mycolor2, x2, y2)
    End Sub

    Private Sub PictureBox3_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox3.Paint
        Dim sKeyValue As New StringBuilder(1024)
        Dim nSize As UInt32 = Convert.ToUInt32(1024)
        Dim sinifilename As String = Application.StartupPath & "\\test.ini"

        GetPrivateProfileString("goods", "goods_3", "", sKeyValue, nSize, sinifilename)
        'Label7.Text = sKeyValue.ToString

        Dim drawstring1 = "F3"
        Dim drawstring2 = sKeyValue.ToString
        Dim x1 = 0, y1 = 0, x2 = 8, y2 = 15    '定義字體左上角位置
        Dim drawfont1 As New Font("Helvetica", 11, FontStyle.Bold)    '定義字型
        Dim drawfont2 As New Font("Microsoft JhengHei", 13, FontStyle.Bold)    '定義字型

        PictureBox3.BackColor = Color.FromArgb(0, 136, 254)
        Dim mycolor1 As New SolidBrush(Color.FromArgb(255, 255, 255))    '定義字體顏色
        Dim mycolor2 As New SolidBrush(Color.FromArgb(255, 255, 255))    '定義字體顏色
        e.Graphics.DrawString(drawstring1, drawfont1, mycolor1, x1, y1)
        e.Graphics.DrawString(drawstring2, drawfont2, mycolor2, x2, y2)
    End Sub

End Class

沒有留言:

張貼留言