Datei nach einem bestimmten Schema auslesen

dark_mascot

Grünschnabel
Hallo,

ich bin ein totaler VB-Anfänger und habe folgendes Problem:

1) Ein Nutzer soll eine (oder mehrere) Dateien (Dateiname.plt)
aus einem Verzeichnis auswählen können.
(habe im Buch was von einer ShowOpen-Methode und
cdlOFNAllowMultiset Option gelesen, aber da war
kein Beispiel-Quellcode dabei (+ CurDir-Fkt) und ich weiß
nun nicht wie ich das Umsetzen muss)

2) Die Datei hat folgenden Aufbau:

Title = "2252"
VARIABLES = "t", "x_wf", "y_wf", "z_wf", "mx_wf", "my_wf", "mz_wf", "mpm", "beta", "phi", "alpha"
ZONE T = "Zone 1416", i = 12018
0 3.8246 0.1389 0.5251 -0.0061 0.4260 0.0057 1. 0.7902 -0.2380 -10.7312
0.000340000000000007 3.8471 0.1409 0.5533 0.0021 0.4399 0.0019 1. 0.7899 -0.2380 -10.7310
0.00068000000000002 3.8515 0.2308 0.5314 0.0028 0.4459 -0.0043 1. 0.7898 -0.2381 -10.731
0.02013 3.8866 0.1283 0.6448 -0.0038 0.4574 0.0036 1. 0.7906 -0.2399 -10.7290
...

Zeile1 =Titel
Zeile2 = Unterschiedliche Anzahl Variablen
Zeile3 = Zohnenbezeichnung + Variable i (i=Anzahl der folgenden Datenzeilen)
Zeile4 bis Zeile (4+i) = Datenzeilen, Zahlen sind durch "Tab" voneinander getrennt
Jede Spalte ist einer Variable zugeordnet (1.Variable=1.Spalte, 2.Variable=2.Spalte usw.)

=> ich muss jetzt irgendwie die ersten drei Zeilen einzeln auslesen
und die Titel, Zohne-T und i als Variablen übernehmen und die Variablen aus Zeile 2 in ein Array speichern.
Dann muss ich zudem jede "Zahlen"-Spalte auch in ein Array abspeichern, da jede
Spalte später seperat bearbeitet werden muss.

Ich weiß nun aber nicht genau wie ich mit meiner Umsetzung beginnen soll,
da ich nur PHP und etwas C++ programmieren kann und nun jene Problematik
in VB umsetzen soll.

Kann mir jemand Quellcode-Ansätze geben, wie man die Datei vom User
auswählen lassen kann, wie ich einzelne Zeilen ansprechen kann und nur bestimmt
Informationen in Strings/Arrays gespeichert bekomme?


Danke für eure Hilfe
Dark_Mascot
 
Zuletzt bearbeitet:
Hi dark_mascot,

zu Punkt 1:
Das bezieht sich auf das Microsoft Common Control.
Code:
Const cdlOFNAllowMultiselect = &H200
 
CommonDialog1.Flags = cdlOFNAllowMultiselect
CommonDialog1.FileName = "*.plt"
CommonDialog1.Filter = "*.plt"
CommonDialog1.ShowOpen
 
Hi dark_mascot,

zu Punkt 2:
die ausgewählten Dateinamen bekommst du mit CommonDialog1.FileName
Wurde nur eine Datei ausgewählt, sieht der Rückgabewert so aus: C:\Daten\Dateiname.plt
Bei mehreren Dateien wird der String mit Leerzeichen unterteilt: C:\Daten\ Dateiname1.plt Dateiname2.plt ...

Zum Öffnen der Dateien kannst du die Open-Funktion nutzen.
Open Dateiname.plt For Input As #Dateinummer

Werte holst du dir mit Line Input aus der Datei
Line Input #Dateinummer, Speichervariable

Für die weitere Bearbeitung mußt du dir mal die String-Funktionen Left$, Right$ und Instr anschauen. In deinem Fall wird auch die Split-Funktion interessant sein.
 
Ich würde dir empfehlen, die Datei mal ganz auszulesen und in ein Array zu spitten:
Code:
Dim FFile As Integer, varName As String, varInhalt As String, varZeilen() As String

varName = "C:\Text.txt" 'hier kannst du auch den Namen mit dme CommonDialog einfügen
varInhalt = Space(FileLen(varName))
FFile = FreeFile

Open varName For Binary As FFile
 Get FFile, , varInhalt
Close FFile

varZeilen = Split(varInhalt, vbNewLine)

Damit hast du die ganze Datei in das Array varZeilen eingelesen und kannst so die Zeilen einfach über die Indexnummer des Arrays (Index = Zeile - 1) auslesen.


Der Doc!
 
Zurück