Hallo zusammen, heute mal wieder einen Beitrag aus dem wirklichem Programmierleben!
Das heutige Ziel war es, auf eine Config-Datei zuzugreifen und die Datei Zeile für Zeile auszulesen.
Hierfür habe ich eine VBA-Klasse gebaut die folgenden Systax hat.
1. Schritt -> Erzeuge ein neues Klassenmodul.
2. der Dateiname zu dieser Datei lautet “Sess_Parm.tao”! Der Name ist völlig unrelevant, aber der Aufbau der Datei.
Hier der Datei Aufbau:
SessionID#asdf-234-223423dasdf-234 projekt_id#66 bauphase_id#5 modul_id#4 modul_path#C:\Temp\SysFolder
Ziel war es nun, die Datei zeilenweise auszulesen und auf basis des Hashtags “#” den String so zu zergliedern, das es später mölgich ist auf den Namen einer Collection zuzugreifen.
'Collection wird erzeugt Private objCollection As New Collection 'Pfad zur Config-Datei wir in einer Constanten hinterlegt Const PATH As String = "C:\Temp\" ' Dateiname ebenfalls in einer Constanten. Const FILENAME As String = "Sess_Parm.tao" 'sLine ist die Zeile der Config-Datei Private sLine As String ' Jetzt wird noch ein objFile erzeugt Private objFile As Object Dim fso As Object 'Prozedur um die Datei zu öffnen. Sub openFile() fileNo = FreeFile 'Holt sich die erste Free File Nummer 'öffnet die Datei zum Lesen Open PATH & FILENAME For Input As #fileNo 'Kopfgesteuerte Schleife zum auslesen der Zeilen. und zwar solange bis EOF (End of File) Do While Not EOF(fileNo) ' Zeile wird in die Variable sLine hinterlegt Line Input #fileNo, sLine 'Prozeduraufruf mit Übergabeparameter der Zeile fillCollection sLine Loop ' Schließt die Config-Datei Close #fileNo End Sub 'In dieser Prozedur wird jetzt die Collection befüllt Sub fillCollection(sZeile As String) 'Varialbe für den späteren Array Dim arrTemp ' jetzt wird die Ziele in zwei Teile geteilt und zwar gemäß dem Seperator (#) arrTemp = Split(sZeile, "#") 'Prüfung mit UBound(UpperBound) ob die Zeile in zwei Teile aufgeteilt wurde If UBound(arrTemp) = 1 Then 'Collection wird befüllt - a) mit dem item und b) mit dem Key objCollection.Add item:=arrTemp(1), Key:=arrTemp(0) End If End Sub 'Hier noch eine Mehtode um die gesammte Collection zurück zu geben. Public Function getCollection() As Collection getCollection = objCollection End Function 'Diese Methode liest nur einen Wert aus Collection mit einem bestimmten Key aus. Public Function getConfigValue(sKey As String) As String getConfigValue = objCollection(sKey) End Function
Ich habe dieses Beispiel sehr klein und Übersichtich gehalten. Die Profis unter uns sehen auf anhieb, das es hier noch verbesserungsmöglichkeiten gibt (Error-Exception,…)
Viele Grüße und viel Spaß beim Testen.