VB6: Was ist hier falsch? |
Von |
asd |
Am |
17. September 2008 um 08:59:49 |
Frage |
Hi, ich will eine Datei öffnen, diese Datei gibt es auch unter X:\xml
wenn er die datei findet kann er sie auch öffnen, wenn nicht kommt es zum fehler bzw. das Programm stürzt ab. Das ganze wollte ich abfangen, komm aber grad net drauf. ich hab glaub nen denkfehler...Private Sub Command2_Click() 'Einlese-Prozess für Glas links Dim eingabe As String 'Starte Einlese-Prozess eingabe = InputBox("Bitte lesen Sie mit dem Scanner die Dateinummer ein") List2.Clear 'Ende Einlese-Prozess 'Entsprechende Datei öffnen mit der Nummer die sich In der Variablen eingabe befindet Open "C:\xml\" & eingabe & ".txt" For Input As #1 ' Datei öffnen. On Error GoTo fehler fehler: Beep Picture3.Visible = True If MsgBox("Datei nicht gefunden", vbExclamation + vbOKOnly) = vbOK Then List2.Clear End If 'Wenn öffnen der Datei erfolgreich In Liste eintragen Picture2.Visible = True List2.AddItem "----------" & " " & Now & " " & "----------" List2.AddItem "DATEI ÖFFNEN ERFOLGREICH" List2.AddItem eingabe List2.AddItem "-------------------------------" 'Fehlerüberprüfung If List2.ListCount = 0 Then Beep Picture3.Visible = True MsgBox "Fehler beim öffnen der Datei", vbExclamation + vbOKOnly Exit Sub End If Dim Textzeile Do While Not EOF(1) ' Schleife bis Dateiende. Line Input #1, Textzeile ' Zeile In Variable einlesen. Debug.Print Textzeile ' Ausgabe im Direktfenster. Loop Close #1 ' Datei schließen. End Sub |
|
Antwort: |
Von |
Gaga |
Am |
17. September 2008 um 09:39:06 |
Antwort |
Die Codezeilen werden in der Reihenfolge abgearbeitet in der sie geschrieben sind. Diese Reihenfolge ist bei total durcheinander
Du öffnest zuerst die Datei und sagst erst nachher, was im Fehlerfall zu tun währe, dh wenn beim Öffnen ein Fehler auftritt ist noch keine Fehlerbehandlung aktiviert. Als erstes mußt du den On Error Goto fehler vor dem Open ... schreiben, aber auch dann wird sich der Code nicht so verhalten wie du vielleicht meinst. Die Zeilen nach der Fehlersprungmarke werden dann nämlich immer ausgeführt auch wenn kein Fehler auftritt. Steht ja nirgends, dass die nur im Fehlerfall ausgeführt werden sollen. Ebenso werden die nachfolgenden Zeilen (List2.AddItem "DATEI ÖFFNEN ERFOLGREICH" etc) immer ausgeführt also auch im Fehlerfall, steht ja nirgends dass die dann nicht ausgeführt werden sollen.
Normalerweise schreibt man die Fehlersprungmarke und den dann auszuführenden Code ans Ende der Sub und vorher ein Exit. Wenn man den Fehler gleich an Ort und Stelle beheben möchte setzt man normalerweise ein On Error Resume Next und frägt dann die Err.Number ab.
Gruß Gaga
|
|
[ VB-/VBA-Forum | Archiv 0413 | Archiv-Übersicht ] |
|