PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : On Error



kalletronic
30.04.2007, 18:35
Hi Leute, ich arbeite zur Zeit an der Software zu meiner "CNC Bohrmaschine" und habe schon gleich ein paar Fragen zu Visual Basic

1. Ich möchte von bestimmten Funktionen (z.B. open Dateiname for...)
die Fehlerauswertung mit " On Error Goto Unterprogramm " realisieren, im Unterprogramm soll dann der Fehler anhand einer zuvor zugewiesenen Variable ausgewertet werden

2. Das Unterprogramm sollte aber nur einmal im ganzen Programm geschrieben werden und dann von den verschiedenen Forms aufgerufen werden, hab aber keine ahnung wie das geht

Ich hoffe ich hab das Problem halbwegs verständlich beschrieben und ihr könnt mir helfen


Danke im Voraus, gruß Kalle

AVRBot
30.04.2007, 19:46
Hallo,
soweit ich weiß, kann man mit der Fehlerauswertung "On Error Goto ..." in keine Prozedur (Sub/Function) springen... also nur in eine Zeile innerhalb der Prozedur mit "On Error Goto". Das Einzige, was man machen könnte, ist eine Fehlerbehandlungs-Prozedur zu schreiben, die aus jeder Prozedur, in der ein Fehler ausgelöst werden kann, aufgerufen wird. Klingt kompliziert, deswegen mach ich ein Beispiel =)

Private Sub Prozedur_1
On Error Goto ErrHandler

'Hier wird ein Fehler ausgelöst...
DoEvents 1

'Prozedur vor Fehlerbehandlung abbrechen
Exit Sub
ErrHandler:
Fehlerbehandlung()
End Sub

Private Sub Command1_Click()
On Error Goto ErrHandler

'Hier wird ein Fehler ausgelöst...
DoEvents 1

'Prozedur vor Fehlerbehandlung abbrechen
Exit Sub
ErrHandler:
Fehlerbehandlung()
End Sub

Public Sub Fehlerbehandlung
'Hier können dann alle Fehler ausgewertet werden...
End Sub


Das Grundgerüst mit "On Error...", "Exit Sub", "ErrHandler:" und "Fehlerbehandlung" musst Du dann in jede Prozedur einbauen, in der Du eine Fehlerbehandlung haben willst...Achtung, wenn Du aus verschiedenen Forms die Prozedur "Fehlerbehandlung()" aufrufen willst, musst Du sie in ein Modul setzen.
Ich hoffe, dass ich Dir weiterhelfen konnts :-)

Mfg
David

kalletronic
30.04.2007, 20:02
Hi, danke für die Antwort, Klappt wunderbar!!
Jetzt hab ich allerdings noch ei Problem mit folgendem Code:


Private Sub Öffnen_Click()
Dim Koordinaten As String
Dim Dateilänge, x As Integer
Fehler = "dateiöffnen"
On Error GoTo ERrhandler

x = 0
DateiNr = FreeFile
Open dateiname For Input As DateiNr
Dateilänge = LOF(DateiNr)
Do Until Koordinaten = Empty
Input #DateiNr, Koordinaten

Hauptmodul.Text1.Text = Hauptmodul.Text1.Text & Koordinaten & vbCrLf
x = x + 1
Loop
Close DateiNr
Exit Sub
ERrhandler:
Fehlerbehandlung (Fehler)
End Sub

da kommt immer die Fehlermeldung "Einlesen hinter Dateiende". kannst du mir dabei auch vlt. helfen?

AVRBot
30.04.2007, 20:10
Hallo,
probier mal statt:

Do Until Koordinaten = Empty

das hier:

Do While Not EOF(DateinNr)

Grüße
David

kalletronic
30.04.2007, 20:15
Hi, super alles funzt bestens!! Danke dir!