Hej alla programmerare! Du måste tömma err-objektet först, innan all kod exekveras så skall du ha err.clear anropet... Då skall du se att varken din eller vb's ruta visas mer än om det blir fel... Som det är nu så visas din ruta ämt misstänkter jag... Tack! Detta är en grundstruktur för felhantering som är en bra grund:Application Error
Version: VB6
Det finns en function i applikationen vilken fungerar felfrit.
Om man lägger in följande felhanterare så får man se sin meddelanderuta som man gjort själv som säger "Application error! 0"
<code>
Public Function()
On Error GoTo Err_handle
'själva koden, bla bla bla...
Err_handle:
If Err.Number <> 0 Then
MsgBox "Application error!" & vbCrLf & Err.Number & vbCrLf & Err.Description
End If
End Function
</code>
Men om man tar bort Err_handle så händer inget igen. VB6's egna felmeddelanderuta visas aldrig.
Vad är detta för nåt?
/Per EricssonSv: Application Error
Sv: Application Error
Men varför visas den över huvudet taget? Är det ett gammalt fel som visas?
Tack på förhand!
/Per EricssonSv: Application Error
<code>
Public Function Test()
On Error GoTo Test_Err
'själva koden, bla bla bla...
Test_Exit:
Exit Sub
Test_Err:
Select Case Err.Number
Case Else
MsgBox "Application error!" & vbCrLf & Err.Number & vbCrLf & Err.Description, vbExclamation, Err.Source
Resume Test_Exit
End Select
End Function
</code>
Resume satsen återställer felet och har tre syntax:
Resume - Hoppar tillbaks till raden som orsakat felet
Resume Next - Hoppar tillbaks till raden efter den som orsakat felet
Resume <Label> - Hoppar till angiven plats
Ett exempel på dett kan vara:
<code>
Public Function Test()
On Error GoTo Test_Err
'själva koden, bla bla bla...
Test_Exit:
Exit Sub
Test_Err:
Select Case Err.Number
Case Else
Select Case Msgbox("Ett fel har uppstått:" & vbCrLf & Err.Description, vbAbortRetryIgnore Or vbExclamation)
Case vbRetry
Resume
Case vbIgnore
Resume Next
Case vbAbort
Resume Test_Exit
End Select
End Select
End Function
</code>
Om ett fel t.ex. beror på att en sökväg leder till en diskett eller cd rom kan Resume var bra för att ge användaren möjlighet att stoppa in disket eller cd rom inan han trycker ok.
Resume Next kan var bra att använda om kodraden inte är viktig för huvudfunktionen.
Med Resume <label> kan koden stänga och frigöra objekt som öppnats innan felet uppstod.