ini Dateien mit VB

Hardware, Software, Webdesign & Coding.

Moderator: Katana

Antworten
Luca
Beiträge: 292
Registriert: So Apr 16, 2000 12:01 am

ini Dateien mit VB

Beitrag von Luca »

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?
Benutzeravatar
spunky
Beiträge: 1725
Registriert: Fr Aug 25, 2000 12:01 am

ini Dateien mit VB

Beitrag von spunky »

' 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>
Benutzeravatar
XTale
Zweiter Admin im Bunde
Beiträge: 4736
Registriert: Fr Mai 12, 2000 12:01 am

ini Dateien mit VB

Beitrag von XTale »

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 Bild
Benutzeravatar
Payne
Wipeout-Freak
Beiträge: 4271
Registriert: Do Jul 06, 2000 12:01 am

ini Dateien mit VB

Beitrag von Payne »

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...
Luca
Beiträge: 292
Registriert: So Apr 16, 2000 12:01 am

ini Dateien mit VB

Beitrag von Luca »

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!!!
Antworten