vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Dateisystem · INI-Dateien   |   VB-Versionen: VB4, VB5, VB620.02.01
Verwalten von INI-Dateien

Zeigt wie man Daten aus INI-Dateien liest bzw. in INI-Dateien speichern kann.

Autor:   LonelySuicide666Bewertung:     [ Jetzt bewerten ]Views:  33.279 
www.vbapihelpline.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

INI-Dateien eignen sich hervorragen, um kleinere Datenmengen zu verwalten (speichern und lesen). Unser nachfolgender Tipp demonstriert die Vorgehensweise, um bestimmte Daten in eine solche INI-Datei zu speichern und wieder auszulesen.

' zunächst die benötigten API-Deklarationen
' Achtung, die Originale wurden etwas umbenannt
 
' Orginal:
' 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 WritePrivateProfileString Lib "kernel32" _
'  Alias "WritePrivateProfileStringA" ( _
'  ByVal lpApplicationName As String, _
'  ByVal lpKeyName As Any, _
'  ByVal lpString As Any, _
'  ByVal lpFileName As String) As Long
 
' Special-Variante
Private Declare Function ReadIni 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 WriteIni Lib "kernel32" _
  Alias "WritePrivateProfileStringA" ( _
  ByVal lpApplicationName As String, _
  ByVal lpKeyName As Any, _
  ByVal lpString As Any, _
  ByVal lpFileName As String) As Long
 
' Der Inhalt, welcher aus der INI-Datei ausgelesen wird,
' landet in RetStr
 
Private RetStr As String
 
' INI-Dateien sind folgendermaßen aufgebaut:
' Es gibt einen Applications Teil, welcher in
' eckigen Klammern steht
' Beispiel: [Programm Config]
' Darunter stehen dann die Key's; Name = Inhalt
' 
' Eine INI-Datei, in der z.B. die Koordinaten einer Form 
' gespeichert sind könnte so aussehen: 
' [Form1] 
' Left=200 
' Top=200
' Width=400
' Hight=300
' Caption="Ini Lesen/Schreiben von Lonely Suicide 666"
' 
' Nachfolgendes Beispiel demonstriert, wie man die Koordinaten
' und die Caption-Eigenschaft einer Form in einer INI-Datei
' speichert und wieder einliest
' 
' INI-Daten lesen und Form-Eigenschaften setzen
 
Public Function Get_FormConfig(ByRef F As Form, _
  ByVal IniPath As String)
  ' RetStr mit 256 Leerzeichen füllen
  RetStr = Space(256)
 
  ' Anmerkung: Wird anstelle des lpApplicationName
  ' ein Nullstring angegeben, erhält man alle Appliction-
  ' Namen der gesamten INI-Datei.
  ' Das gleiche gilt auch für die lpKeyName Eigenschaft
  ' Daten Lesen, wenn die INI-Datei nicht existiert, wird die
  ' Standard Left-Eigenschaft der Form zurückgegeben (F.Left)  
  ReadIni F.Name, "Left", F.Left, RetStr, Len(RetStr), IniPath
 
  ' Nullcharzeichen abtrennen, in einen Long-Wert umwandeln
  ' und der Form zuweisen
  F.Left = CLng(Left$(RetStr, InStr(1, RetStr, _
    vbNullChar) - 1))
 
  ' Das gleiche nun für alle anderen Eigenschaften
  RetStr = Space(256)
  ReadIni F.Name, "Top", F.Top, RetStr, Len(RetStr), _
    IniPath
  F.Top = CLng(Left$(RetStr, InStr(1, RetStr, _
    vbNullChar) - 1))
 
  RetStr = Space(256)
  ReadIni F.Name, "Width", F.Width, RetStr, Len(RetStr), _
    IniPath
  F.Width = CLng(Left$(RetStr, InStr(1, RetStr, _
    vbNullChar) - 1))
 
  RetStr = Space(256)
  ReadIni F.Name, "Height", F.Height, RetStr, Len(RetStr), _
    IniPath
  F.Height = CLng(Left$(RetStr, InStr(1, RetStr, _
    vbNullChar) - 1))
 
  RetStr = Space(256)
  ReadIni F.Name, "Caption", F.Caption, RetStr, _
    Len(RetStr), IniPath
  F.Caption = Left$(RetStr, InStr(1, RetStr, vbNullChar) - 1)
End Function
 
' Schreiben der Eigenschaften in die INI-Datei
Public Function Set_FormConfig(ByVal F As Form, _
  ByVal IniPath As String)
 
  ' Beim Schreiben der INI-Dateien gilt:
  ' Existiert die INI-Datei noch nicht, so wird sie angelegt
  ' Übergibt man einen NullString an den lpApplicationName
  ' oder lpKeyName werden alle Applicationen oder Key's 
  ' (inkl. Werten) gelöscht
  ' Übergibt man z.B. anstelle von lpApplicationName und 
  ' lpKeyName beidemale einen NullString, löscht man die 
  ' gesamte INI-Datei
 
  ' Schreibt einen Eintrag in eine INI-Datei
  ' (Umwandeln in einen String nicht vergessen)
  WriteIni F.Name, "Left", CStr(F.Left), IniPath
 
  ' alle anderen Form-Eigenschaften
  WriteIni F.Name, "Left", CStr(F.Left), IniPath
  WriteIni F.Name, "Top", CStr(F.Top), IniPath
  WriteIni F.Name, "Width", CStr(F.Width), IniPath
  WriteIni F.Name, "Height", CStr(F.Height), IniPath
  WriteIni F.Name, "Caption", F.Caption, IniPath
End Function
 
' Der nachfolgende Code ist für die Form bestimmt
Private Sub Form_Load()
 
  ' Lesen der gespeicherten Daten (ggf. Dafult-Werte setzen)
  Get_FormConfig Me, App.Path & "\Config.ini"
End Sub
 
Private Sub Form_QueryUnload(Cancel As Integer, _
  UnloadMode As Integer)
 
  ' Speichern der aktuellen Eigenschaften
  Set_FormConfig Me, App.Path & "\Config.ini"
End Sub

Was geschieht genau?
Wird die Position und/oder Größe des Formulars durch den Anwender geändert, so werden diese beim Schließen des Fensters gespeichert, so daß bei einem erneuten Aufruf des Fensters die zuletzt eingestellten Werte wiederverwendet werden.

Anmerkung
INI-Dateien eignen sich besonders für das Speichern kleiner Datenmengen.

Was spricht für INI-Dateien?
+ Man verstopft nicht die Regestry
+ einfacher zu handhaben als sequentielle Dateien

Was spricht gegen INI-Dateien?
+ Zu langsam für große Datenmengen, da sollte man lieber auf Datenbanken zurückgreifen
 

Dieser Tipp wurde bereits 33.279 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel