Gibt es nicht Funktionen in VB mit denen ich .ini Dateien einlesen kann?
Natürlich gibt es die Möglichkeit sich sowas
selber zu schreiben, aber Zeichen für Zeichen selber einzulesen und die Syntax zu interpretieren ist sehr komplex und warscheinlich nicht besonders schnell. Noch lieber hätte ich natürlich ein Beispielscript das die ini zu einer Xml datei konvertiert. Von da aus ist das Navigieren sehr viel schneller und unaufwändiger.
Hat jemand ne Ahnung wo ich soetwas bekommen könnte?
ini Dateien mit VB
Moderator: Katana
ini Dateien mit VB
' suche nach "INI-Dateien erstellen" bei http://www.activevb.de/
' oder hier: http://www.activevb-archiv.de/vb/VBtips/VBtip0108.shtml
' nimm' dies:
Option Explicit
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 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 WritePrivateProfileSection Lib _
"kernel32"Alias "WritePrivateProfileSectionA" _
(ByVal lpAppName As String, ByVal lpString As _
String, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileSection Lib _
"kernel32"Alias "GetPrivateProfileSectionA" _
(ByVal lpAppName As String, ByVal lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName _
As String) As Long
Dim File$, Field() As String
Private Sub Form_Load()
Dim X%
'Pfad der neuen ini-Datei
File = App.Path & "Test.ini"
Frame1.Caption = File
'Textfelder vordefinieren: Schreiben
Text1.Text = "Section1"
Text2.Text = "Key1"
Text3.Text = "Hallo wie gehts?"
'Textfelder vordefinieren: Lesen
Text5.Text = "Section1"
Text6.Text = "Key1"
Text7.Text = ""
Text8.Text = "Section2"
'Feld zuweisen und ausgeben
Text4.Text = "Section2"
ReDim Field(0 To 5)
Field(0) = "Bananen"
Field(1) = "Gurken"
Field(2) = "Erdbeeren"
Field(3) = "Bohnen"
Field(4) = "Äpfel"
Field(5) = "Kartoffeln"
For X = 0 To UBound(Field)
List1.AddItem Field(X)
Next X
List2.Clear
End Sub
Private Sub Command1_Click()
'Wert "Key1" schreiben
Call INISetValue(File, Text1.Text, Text2.Text, Text3.Text)
'Feld schreiben
Call INISetArray(File, Text4.Text, Field)
End Sub
Private Sub Command2_Click()
Dim X%, xArray$()
'Wert "Key1" lesen
Text7.Text = INIGetValue(File, Text5.Text, Text6.Text)
'Feld lesen
ReDim xArray(0)
Call INIGetArray(File, Text8.Text, xArray)
'Feld ausgeben
List2.Clear
If UBound(xArray) > 0 Then
For X = 0 To UBound(xArray) - 1
List2.AddItem xArray(X)
Next X
End If
End Sub
Private Sub Command3_Click()
Call INIDeleteKey(File, Text5.Text, Text6.Text)
Call Command2_Click
End Sub
Private Sub Command4_Click()
Call INIDeleteSection(File, Text5.Text)
Call INIDeleteSection(File, Text8.Text)
Call Command2_Click
End Sub
Private Sub INISetValue(ByVal Path$, ByVal Sect$, ByVal Key$, _
ByVal Value$)
Dim Result&
'Wert schreiben
Result = WritePrivateProfileString(Sect, Key, Value, Path)
End Sub
Private Function INIGetValue(ByVal Path$, ByVal Sect$, ByVal Key$) _
As String
Dim Result&, Buffer$
'Wert lesen
Buffer = Space$(32)
Result = GetPrivateProfileString(Sect, Key, vbNullString, _
Buffer, Len(Buffer), Path)
INIGetValue = Left$(Buffer, Result)
End Function
Private Function INISetArray(ByVal Path$, ByVal Sect$, xArray() _
As String)
Dim X%, Buffer$, Result&
'Feld in einen String mit Trennzeichen Chr$(0) umwandeln
For X = LBound(xArray) To UBound(xArray)
Buffer = Buffer & xArray(X) & Chr$(0)
Next X
'String schreiben
Buffer = Left$(Buffer, Len(Buffer) - 1)
Result = WritePrivateProfileSection(Sect, Buffer, Path)
End Function
Private Sub INIGetArray(ByVal Path$, ByVal Sect$, xArray() As String)
Dim Result&, Buffer$
Dim l%, p%, z%
'String lesen
Buffer = Space(32767)
Result = GetPrivateProfileSection(Sect, Buffer, Len(Buffer), Path)
Buffer = Left$(Buffer, Result)
If Buffer <> ""Then
'String mit Trennzeichen Chr$(0) in ein Feld umwandeln
l = 1
ReDim xArray(0)
Do While l < Result
p = InStr(l, Buffer, Chr$(0))
If p = 0 Then Exit Do
xArray(z) = Mid$(Buffer, l, p - l)
z = z + 1
ReDim Preserve xArray(0 To z)
l = p + 1
Loop
End If
End Sub
Private Sub INIDeleteKey(ByVal Path$, ByVal Sect$, ByVal Key$)
Call WritePrivateProfileString(Sect, Key, 0&, Path)
End Sub
Private Sub INIDeleteSection(ByVal Path$, ByVal Sect$)
Call WritePrivateProfileString(Sect, 0&, 0&, Path)
End Sub
[ 14. Februar 2002: Beitrag editiert von: spunky ]</p>
' oder hier: http://www.activevb-archiv.de/vb/VBtips/VBtip0108.shtml
' nimm' dies:
Option Explicit
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 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 WritePrivateProfileSection Lib _
"kernel32"Alias "WritePrivateProfileSectionA" _
(ByVal lpAppName As String, ByVal lpString As _
String, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileSection Lib _
"kernel32"Alias "GetPrivateProfileSectionA" _
(ByVal lpAppName As String, ByVal lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName _
As String) As Long
Dim File$, Field() As String
Private Sub Form_Load()
Dim X%
'Pfad der neuen ini-Datei
File = App.Path & "Test.ini"
Frame1.Caption = File
'Textfelder vordefinieren: Schreiben
Text1.Text = "Section1"
Text2.Text = "Key1"
Text3.Text = "Hallo wie gehts?"
'Textfelder vordefinieren: Lesen
Text5.Text = "Section1"
Text6.Text = "Key1"
Text7.Text = ""
Text8.Text = "Section2"
'Feld zuweisen und ausgeben
Text4.Text = "Section2"
ReDim Field(0 To 5)
Field(0) = "Bananen"
Field(1) = "Gurken"
Field(2) = "Erdbeeren"
Field(3) = "Bohnen"
Field(4) = "Äpfel"
Field(5) = "Kartoffeln"
For X = 0 To UBound(Field)
List1.AddItem Field(X)
Next X
List2.Clear
End Sub
Private Sub Command1_Click()
'Wert "Key1" schreiben
Call INISetValue(File, Text1.Text, Text2.Text, Text3.Text)
'Feld schreiben
Call INISetArray(File, Text4.Text, Field)
End Sub
Private Sub Command2_Click()
Dim X%, xArray$()
'Wert "Key1" lesen
Text7.Text = INIGetValue(File, Text5.Text, Text6.Text)
'Feld lesen
ReDim xArray(0)
Call INIGetArray(File, Text8.Text, xArray)
'Feld ausgeben
List2.Clear
If UBound(xArray) > 0 Then
For X = 0 To UBound(xArray) - 1
List2.AddItem xArray(X)
Next X
End If
End Sub
Private Sub Command3_Click()
Call INIDeleteKey(File, Text5.Text, Text6.Text)
Call Command2_Click
End Sub
Private Sub Command4_Click()
Call INIDeleteSection(File, Text5.Text)
Call INIDeleteSection(File, Text8.Text)
Call Command2_Click
End Sub
Private Sub INISetValue(ByVal Path$, ByVal Sect$, ByVal Key$, _
ByVal Value$)
Dim Result&
'Wert schreiben
Result = WritePrivateProfileString(Sect, Key, Value, Path)
End Sub
Private Function INIGetValue(ByVal Path$, ByVal Sect$, ByVal Key$) _
As String
Dim Result&, Buffer$
'Wert lesen
Buffer = Space$(32)
Result = GetPrivateProfileString(Sect, Key, vbNullString, _
Buffer, Len(Buffer), Path)
INIGetValue = Left$(Buffer, Result)
End Function
Private Function INISetArray(ByVal Path$, ByVal Sect$, xArray() _
As String)
Dim X%, Buffer$, Result&
'Feld in einen String mit Trennzeichen Chr$(0) umwandeln
For X = LBound(xArray) To UBound(xArray)
Buffer = Buffer & xArray(X) & Chr$(0)
Next X
'String schreiben
Buffer = Left$(Buffer, Len(Buffer) - 1)
Result = WritePrivateProfileSection(Sect, Buffer, Path)
End Function
Private Sub INIGetArray(ByVal Path$, ByVal Sect$, xArray() As String)
Dim Result&, Buffer$
Dim l%, p%, z%
'String lesen
Buffer = Space(32767)
Result = GetPrivateProfileSection(Sect, Buffer, Len(Buffer), Path)
Buffer = Left$(Buffer, Result)
If Buffer <> ""Then
'String mit Trennzeichen Chr$(0) in ein Feld umwandeln
l = 1
ReDim xArray(0)
Do While l < Result
p = InStr(l, Buffer, Chr$(0))
If p = 0 Then Exit Do
xArray(z) = Mid$(Buffer, l, p - l)
z = z + 1
ReDim Preserve xArray(0 To z)
l = p + 1
Loop
End If
End Sub
Private Sub INIDeleteKey(ByVal Path$, ByVal Sect$, ByVal Key$)
Call WritePrivateProfileString(Sect, Key, 0&, Path)
End Sub
Private Sub INIDeleteSection(ByVal Path$, ByVal Sect$)
Call WritePrivateProfileString(Sect, 0&, 0&, Path)
End Sub
[ 14. Februar 2002: Beitrag editiert von: spunky ]</p>
ini Dateien mit VB
hm...
dann mach ich doch lieber ne datei in der ich mir merk welche option in welcher zeile steht und les die dann zeilenweise ein
dann mach ich doch lieber ne datei in der ich mir merk welche option in welcher zeile steht und les die dann zeilenweise ein
ini Dateien mit VB
Also XTale's Prinzip benutze ich selbst bei PHP (wo ich allerdings keine .ini auslesen muss ^^)
Würd' mich mal interessieren, wozu du die auslesen willst ? Nur so...
Würd' mich mal interessieren, wozu du die auslesen willst ? Nur so...
ini Dateien mit VB
Ich Schreibe ein Programm, dass Dateiennamen nach bestimmten Kriterien Durchsucht. Diese Dateien sind C++ VB oder Delphi Dateien die einem bestimmten Developer zugeordned werden müßen. Sprich: Dateien die zB. verbotene Zeiechen entahlten (ä,ü....) werden von meinem Programm aufgelistet, und diese Liste dann an den Developer geschickt.
Die Intormationen über den Developer stehen allerdings in den .ini Dateien. Außerdem würde ich eben eine Funktion einbauen, die aus der veralteten .ini Datei eine .xml Datei macht.
Das kann ich aber jetzt ja selber schreiben.
Ich konnte das Beispiel-Script zwar noch nicht testen, aber danke schonmal!!!
Die Intormationen über den Developer stehen allerdings in den .ini Dateien. Außerdem würde ich eben eine Funktion einbauen, die aus der veralteten .ini Datei eine .xml Datei macht.
Das kann ich aber jetzt ja selber schreiben.
Ich konnte das Beispiel-Script zwar noch nicht testen, aber danke schonmal!!!


