einlesen und abspeichern

LZD

Grünschnabel
Hi
bin ein ziemlicher vb nub.

kann mir einer sagen wie ich z.b. eine ini oder eine cfg in eine textbox einlesen lassen kann. Und wenn ich da was veraender, dass die dann wieder abspeichert wird.

textbox und 2 buttons bekomm ich noch hin :)
bei mehr wird es schwierig
einen einfachen weg plz
 
Da hast Du zwei Möglichkeiten:
Erstmal eine normale Textbox, bei der Du die Datei Zeile für Zeile einliest und die jeweilige Zeile dann in die Textbox schreibst. Das ist die etwas kompliziertere Variante.
Zweitens gibt es ein Steuerelement namens RichTextBox (musst Du hinzufügen unter Projekt, Komponenten, Microsoft Rich Textbox Control). Dieses Steuerelement hat zwei Methoden:
  • LoadFromFile zum Laden und
  • SaveToFile zum Speichern
Die zweite Möglichkeit ist einfacher, aber bei der ersten Variante lernst Du auch gleich noch den Umgang mit Textdateien.
 
Für das Bearbeiten von INIs sind folgende API noch empfehlenswert:

Code:
JEDE INI

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 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 GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer As String, ByVal nSize As Long, 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

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


WIN.INI

Private Declare Function WriteProfileSection Lib "kernel32" Alias "WriteProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String) As Long

Private Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long

Private Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Private Declare Function GetProfileSection Lib "kernel32" Alias "GetProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Einfach mal den Namen bei Google eingeben. Da solltest du so einiges finden. Falls du immer noch Probs haben, wieder posten ;) Ich finde APIs für Anfänger zwar nich so empfehlenswert, zum Auslesen von Konfigurationen sind die meiner Meinung nach aber wesentlich einfacher als mit Textdateien und Stringfunktionen...

mfg Grimreaper
 
Zuletzt bearbeitet:
gute variante

kenn auch eine gute Variante dateien einzulesen und zurückzuschreiben!

also du machst einen Button cmdLesen, einen cmdSchreiben ein Textfeld das du txtfilename nennst und eine Listbox du lstAusgabe nennst!


erstmal die Variablen dimensionieren das sie für alle Sub routinen gelten (also Public):
PHP:
Option Explicit
Dim filename As String
Dim eingabe As String
Dim eintrag As String

filename = txtfilename.Text

und schreibst für den cmdLesen folgendes in den code:
PHP:
Private Sub cmdLesen_Click()

Open filename For Input As #1
Do While Not EOF(1)
   Input #1, eingabe
   lstAusgabe.Additem eingabe
Loop
Close #1

End Sub

und für cmdSchreiben schreibst du in den Code:

PHP:
Private Sub cmdSchreiben_Click()
Dim i As Integer

Open filename For Output As #2
   For i = 0 To lstAusgabe.ListCount - 1
       Print #2, lstAusgabe.List(i)
   Next i
Close #2

lstAusgabe.Clear

End Sub

verbessert mich einer wenn was falsch is...
für Fragen stehe ich gerne zur Verfügung ;)
 
Zurück