Jusky Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 Hallo, ich habe da ein Problem mit VB. - Bin noch Neuling auf dem Gebiet und wollte wissen, wie ich den Inhalt einer Textdatei einlesen und in einer Listbox ausgeben kann. Den Dateinamen sowie den Pfad gibt der User über 2 Textfelder ein. Hier ist mein bisheriger Programmcode.. Kann sein, dass dort einige Fehler sind, ich komme mit den ganzen "Objekt-erstellen"-Sachen noch nicht so klar. Private Sub cmdClick_Click() Dim fsoObj Set fsoObj = CreateObject("Scripting.FileSystemObject") Dim FileName As String Dim PathName As String Dim absPath As String Dim Datei As String PathName = txtPfad.Text FileName = txtDatei.Text absPath = PathName & FileName Datei = fsoObj.OpenAsTextStream(absPath) Do While Not EOF(Datei) 'Dateiinhalt zeilenweise in die Listbox schreiben Loop Close Datei End Sub Danke für die Hilfe! MfG, Jusky Zitieren
-roTekuGeL- Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 hi erstmal würde ich ein Commondialog element einfügen, dann muss der user den pfad nicht selber angeben sondern sucht die datei mit dem CD Das bsp. müsste so eigentlich laufen Private Sub Einlesen_Click() Dim Dateinr As Integer 'Variable Dim Temp As String 'Variable dim DateiPfad as String CommonDialog1.ShowOpen DateiPfad = CommonDialog1.Filename Dateinr = FreeFile Open DateiPfad For Input As Dateinr Do While Not EOF(Dateinr) Line Input #Dateinr, Temp list1.AddItem Temp Loop Close Dateinr End Sub Zitieren
Jusky Geschrieben 17. Februar 2003 Autor Geschrieben 17. Februar 2003 Danke für die schnelle Antwort! Das mit dem Common Dialog musst du mir aber mal genauer erklären! Brauche ich denn nicht für die ganze Sache das FileSystemObject? - Wie würde das denn damit aussehen? Zitieren
-roTekuGeL- Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 FileSystemObject hab ich noch nie gebraucht und weiß jetzt eigentlich auch gar nicht wozu... den CommonDialog musst du erst in die werkzeugliste mit einfügen: Menü: Project => Komponenten => neues fenster geht auf hier suchst du Microsoft Common Dialog Control 6.0 davor machst du dann nen hacken und drückst OK dann hast du das element bei den anderen (textbox, Listbox,...) ganz unten füge das neue element einfach in die form ein und mit dem Code den ich geschrieben hab müsste ess dann auch schon laufen Zitieren
Jusky Geschrieben 17. Februar 2003 Autor Geschrieben 17. Februar 2003 Super, es hat funktioniert!!! Vielen Dank nochmal und einen schönen Tag! MfG, Jusky Zitieren
-roTekuGeL- Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 Freut mich wenn ich helfen konnte Zitieren
maxim_42 Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 Um angemessen auf ein Abbrechen des CommonDialogs durch den User reagieren zu können, würde ich noch folgendes hinzufügen: On Error Resume Next CommonDialog_Option.ShowOpen If Err = cdlCancel Then Exit Sub End If Der CommonDialog wirft einen cdlCancel-Error wenn durch den User der Abbrechen-Button gedrückt wird. Die Sub die verlassen werden soll, wäre hier z.b. das Click-Ereigniss des Buttons mit dem der User eine Datei auswählen kann. Zitieren
Jusky Geschrieben 17. Februar 2003 Autor Geschrieben 17. Februar 2003 Also irgendwie haut das bei mir nicht hin... Das bringt mein Programm regelrecht zum Absturz. Ich muss das Ganze doch vor dem eigentlichen Dateiaufruf einfügen, oder? Der ganze Quellcode ist folgender: Private Sub cmdClick_Click() Dim Dateinr As Integer Dim PathName As String Dim Zeile As String On Error Resume Next CommonDialog1.ShowOpen If Err = cdlCancel Then Exit Sub End If PathName = CommonDialog1.FileName Dateinr = FreeFile Open PathName For Input As Dateinr Do While Not EOF(Dateinr) Line Input #Dateinr, Zeile lstInhalt.AddItem Zeile Loop Close Dateinr End Sub Zitieren
-roTekuGeL- Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 also wenn jetzt ein fehler auftritt zeigt er gar nichts an sondern beendet nur die sub. wenn er ne meldung bringen soll schreib das nach der err_err: z.b. Msgbox "Fehler!" Option Explicit Private Sub Command1_Click() On Error GoTo err_err Dim Dateinr As Integer 'Variable Dim Temp As String 'Variable Dim DateiPfad As String CommonDialog1.ShowOpen DateiPfad = CommonDialog1.FileName Dateinr = FreeFile Open DateiPfad For Input As Dateinr Do While Not EOF(Dateinr) Line Input #Dateinr, Temp List1.AddItem Temp Loop Close Dateinr Exit Sub err_err: End Sub Zitieren
Jusky Geschrieben 17. Februar 2003 Autor Geschrieben 17. Februar 2003 Ja, so gehts wieder. Habe noch ein Unload Me dahinter gesetzt, damit das Programm beim Abbruch und der Meldung sofort geschlossen wird. So, danke euch beiden für die Tips! Zitieren
-roTekuGeL- Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 kleiner Tipp: wenn du wissen willst ob der User den CD abgebrochen hat dann frag den CommonDialog1.Filename ab wenn der = "" ist dann hat der user folglich keine Datei ausgewält (also Abgebrochen) Zitieren
maxim_42 Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 Also irgendwie haut das bei mir nicht hin... Das bringt mein Programm regelrecht zum Absturz. Sorry, hab auch was vergessen: Dem CommonDialog muss vorher seine Eigenschaft CancelError = true gesetzt werden. Etwa mit CommonDialog1.CancelError=true. Ansonsten wird halt kein Fehler beim Drücken des Abbrechen-Buttons geworfen, und wegen Resume next läuft dein Programm beim Versuch eine Datei über einen leeren String zu öffnen ins Nirvana. Sorry nochmal. Zitieren
-roTekuGeL- Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 tjo desswegen so da gibts net viel falsch zu machen und läuft so ziemlich auf das selbe raus Originally posted by |ReDBullet| kleiner Tipp: wenn du wissen willst ob der User den CD abgebrochen hat dann frag den CommonDialog1.Filename ab wenn der = "" ist dann hat der user folglich keine Datei ausgewält (also Abgebrochen) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.