Ja, das wusste ich.
Das Problem ist das Benutzen als Ini-Datei.
Wenn ich einen StreamReader einsetze, erwartet dieser zwingend eine Datei auf der Festplatte.
Ich nutze diesen iniReader:
Public Class IniReader
Private Declare Ansi Function GetPrivateProfileInt Lib "kernel32.dll" Alias _
"GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal _
lpKeyName As String, ByVal nDefault As Integer, ByVal lpFileName As _
String) As Integer
Private Declare Ansi Function WritePrivateProfileString Lib "kernel32.dll" _
Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As _
String) As Integer
Private Declare Ansi Function GetPrivateProfileString Lib "kernel32.dll" _
Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal _
lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As _
StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As _
Integer
Private Declare Ansi Function GetPrivateProfileSectionNames Lib "kernel32" _
Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer() As Byte, _
ByVal nSize As Integer, ByVal lpFileName As String) As Integer
Private Declare Ansi Function WritePrivateProfileSection Lib "kernel32.dll" _
Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal _
lpString As String, ByVal lpFileName As String) As Integer
Public Sub New(ByVal file As String)
Filename = file
End Sub
Public Property Filename() As String
Get
Return m_Filename
End Get
Set(ByVal Value As String)
m_Filename = Value
End Set
End Property
Public Property Section() As String
Get
Return m_Section
End Get
Set(ByVal Value As String)
m_Section = Value
End Set
End Property
Public Function ReadString(ByVal section As String, ByVal key As String, _
ByVal defVal As String) As String
Dim sb As New StringBuilder(MAX_ENTRY)
Dim Ret As Integer = GetPrivateProfileString(section, key, defVal, sb, _
MAX_ENTRY, Filename)
Return sb.ToString()
End Function
Public Function ReadString(ByVal section As String, ByVal key As String) As _
String
Return ReadString(section, key, "")
End Function
Public Function ReadString(ByVal key As String) As String
Return ReadString(Section, key)
End Function
Public Function Write(ByVal section As String, ByVal key As String, ByVal _
value As Integer) As Boolean
Return Write(section, key, value.ToString())
End Function
Public Function Write(ByVal key As String, ByVal value As Integer) As _
Boolean
Return Write(Section, key, value)
End Function
Public Function Write(ByVal section As String, ByVal key As String, ByVal _
value As String) As Boolean
Return (WritePrivateProfileString(section, key, value, Filename) <> 0)
End Function
Public Function Write(ByVal key As String, ByVal value As String) As Boolean
Return Write(Section, key, value)
End Function
Public Function Write(ByVal key As String, ByVal value() As Byte) As Boolean
Return Write(Section, key, value)
End Function
Public Function Write(ByVal section As String, ByVal key As String, ByVal _
value() As Byte, ByVal offset As Integer, ByVal length As Integer) As _
Boolean
If value Is Nothing Then
Return Write(section, key, CType(Nothing, String))
Else
Return Write(section, key, Convert.ToBase64String(value, offset, _
length))
End If
End Function
Public Function Write(ByVal section As String, ByVal key As String, ByVal _
value As Boolean) As Boolean
Return Write(section, key, value.ToString())
End Function
Public Function Write(ByVal key As String, ByVal value As Boolean) As _
Boolean
Return Write(Section, key, value)
End Function
Private m_Filename As String
Private m_Section As String
Private Const MAX_ENTRY As Integer = 32768
End Class Wenn ich jetzt eine neue Instant erstelle, z.b. Dim reader As inireader(My.Resources.xy), dann funktioniert das nicht.
Wie kann ich eine Datei aus einer Ressource mit dem IniReader benutzen? |