19. Apr 2024, 22:02
VB-fun.de - Beitragsübersicht zum VB-/VBA-Forum-Archiv 0413
  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 ]
 Antworten
VB6: Was ist hier falsch? - asd 17. September 2008 um 08:59:49
Re: Was ist hier falsch? - Gaga 17. September 2008 um 09:39:06
Re: Was ist hier falsch? - asd 18. September 2008 um 07:28:08

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX | DirectX-Forum | VB.Net | VB.Net-Forum | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum