Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

500 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

27 april 2024, 14:56:04

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: Gestructureerde foutbehandeling in VB 6  (gelezen 8454 keer)

0 leden en 1 gast bekijken dit topic.

Offline NLCOMP

  • Forumheld
  • *****
  • Berichten: 14.666
    • NL Computer Forum
Gestructureerde foutbehandeling in VB 6
« Gepost op: 9 november 2009, 20:36:29 »
Bericht 1 van 6

NL Computer Forum ~ SQL & Programmeren
 Van:jvdpeet01Datum:06-08-2008
 Aan:AllenMsgID:3965.1
 Onderwerp:Gestructureerde foutbehandeling in VB 6Forum:ws-nlcomputer
Versies van VB na VB 6 hebben de mogelijkheid van gestructureerde foutenbehandeling, VB 6 kenneljk niet.
Kan iemand mij vertellen hoe ik ervoor kan zorgen dat een fout in een aangeroepen procedure naar de error handler van die routine gaat en niet naar de aanroeper daarvan. J.v.d.Peet


Bericht 2 van 6

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:06-08-2008
 Aan:jvdpeet01MsgID:3965.2
 Onderwerp:Gestructureerde foutbehandeling in VB 6Forum:ws-nlcomputer
Hoi J,

>>...een fout in een aangeroepen procedure naar de error handler van die routine gaat en niet naar de aanroeper daarvan.<<
Je bedoeld VB6?
Hierbij een voorbeeld:
Plaats de code in een formulier met daarin een CommandButton genaamd Command1

Private Sub Command1_Click()
Dim i As Integer
Dim etxt As String

'fouten binnen deze Sub afhandelen
On Error GoTo errhandle

'genereer een fout
i = 123456
MsgBox i

'verlaat de routine na foutafhandeling of als er geen fout is.
errexit:
Exit Sub

'foutafhandeling
errhandle:
  etxt = "Error" & Err.Number & " : " & Err.Description & " in Command1_Click"
  If MsgBox(etxt & vbCrLf & vbCrLf & "Klik op JA om in de routine verder te gaan of NEE om de routine nu te verlaten.", vbCritical + vbYesNo) = vbYes Then
   Resume Next
Else
   GoTo errexit
End If

End Sub
groeten, Peter





Bericht 3 van 6

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:06-08-2008
 Aan:PeterMsgID:3965.3
 Onderwerp:Gestructureerde foutbehandeling in VB 6Forum:ws-nlcomputer
Hoi Peter,
PMFJI, ik zou hem iets vereenvoudigen:
Private Sub Command1_Click()
Dim i As Integer
On Error GoTo errhandle
i = 123456
MsgBox i
Exit Sub
errhandle:
If MsgBox("Error" & Err.Number & " : " & Err.Description & " in Command1_Click" & vbCrLf & vbCrLf & _
"Klik op JA om in de routine verder te gaan of NEE om de routine nu te verlaten.", _
vbCritical + vbYesNo) = vbYes Then Resume Next
End Sub
Scheelt een string, een else, een goto en een label en doet hetzelfde.
Maar misschien heb jij goede redenen het op deze wat uitgebreider manier te doen? Ik leer graag wat bij als het om VB gaat.
a propos, schrijf jij ook in VB.net? Zo ja, wat zijn jouw ervaringen?

Michel Uphoff (NLcomputer)
Homepage



Bericht 4 van 6

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:07-08-2008
 Aan:Michel Uphoff (Sysop)MsgID:3965.4
 Onderwerp:Gestructureerde foutbehandeling in VB 6Forum:ws-nlcomputer
Hoi Michel,

>>Maar misschien heb jij goede redenen het op deze wat uitgebreider manier te doen?<<
Ja, hopelijk is hiermee de oorspronkelijke vraag wat duidelijker uitgelegd qua mogelijkheden voor error-afhandeling.

De regel
etxt = "Error" & Err.Number & " : " & Err.Description
staat in een functie en in een module zodat die globaal bekend is:

Function ErrorText() As String
   ErrorText = "Error" & Err.Number & " : " & Err.Description
End Function

Verder heeft het gebruik van een tijdelijke string een 2e reden. Fouten kunnen dan getoond worden met een MsgBox oid EN met een andere sub gelogd worden in een logbestand tbv probleem-onderzoek.
Dan krijg je bijvoorbeeld:

etxt = ErrorText & " in Command1_Click"
Call CreateLog(etxt)
If MsgBox(etxt & vbCrLf & vbCrLf & _
"Klik op JA om in de routine verder te gaan of NEE om de routine nu te verlaten.", _
vbCritical + vbYesNo) = vbYes Then Resume Next
End Sub


>>a propos, schrijf jij ook in VB.net? Zo ja, wat zijn jouw ervaringen?<<
Zeer weinig. Ik heb VB.2005 wel geinstalleerd om ervaring op te doen maar het is een heel gedoe.
Als je ooit gewerkt hebt met het MsChart component van VB, dan weet je wel wat ik bedoel.
Verder is dat .NET niet echt handig als je programma's maakt voor Win98/XP/Vista. Teveel verschillen of functies die dan wel dan niet goed werken. Win98 gaat maar tot .NET v1.1 geloof ik. Bij WinXP en later wordt regelmatig de .NET Framework geupdate waardoor je geen controle hebt over je eigen programma als dat eenmaal geinstalleerd is.

Ik hou het liever simpel.
Eigenlijk is Delphi nog handiger, Je compileert en er rolt 1 executable uit. Dat gooi je in een map en klaar. Geen installatie nodig voor allerlei .OCX of .DLL bestanden.


Groeten, Peter







Bericht 5 van 6

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:07-08-2008
 Aan:PeterMsgID:3965.5
 Onderwerp:Gestructureerde foutbehandeling in VB 6Forum:ws-nlcomputer
Hoi Peter,
>> en in een module zodat die globaal bekend is <<
Tuurlijk, duidelijk. Ik werk ook graag met een module voor global variables.
Jouw bezwaren tegen .Net zijn bij mij de reden om er niet aan te beginnen. Ik word nu al gestoord van die .Net versies en hun verschillen en het lijkt er op dat MS de laatste .Net versie nog niet uitgebracht heeft, zodat die ellende nog even doorgaat. Absoluut geen verbetering imo. Ik lees dat VB6 nog wel een flinke tijd 'getolereerd' wordt, en eerlijk gezegd denk ik dat gezien de enorme 'installed base' die flinke tijd nog wel eens vele jaren zou kunnen worden.
Delphi.. Stefan gebruikt dat ook graag. Ik zou mij er toch eens wat meer in moeten verdiepen, want het resulteert in een mooie KISS exe. (En als er iemand van KISS houdt ben ik het wel.)
Thanks voor de reactie,

Michel Uphoff (NLcomputer)
Homepage



Bericht 6 van 6

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:12-08-2008
 Aan:Michel Uphoff (Sysop)MsgID:3965.6
 Onderwerp:Gestructureerde foutbehandeling in VB 6Forum:ws-nlcomputer
Hoi Michel,
>> Delphi.. Stefan gebruikt dat ook graag.  <<
Yep!

>S t e f a n

    Overzicht van 150 oude en minder bekende zwemslagen
    http://www.zwemslagen.info[/]
 


Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Gestructureerde foutbehandeling in VB 6
« Reactie #1 Gepost op: 25 november 2009, 22:32:09 »
Hoi Peter en Michel,
Ik ben het helemaal eens met jullie mening over .NET. Ik heb het bij het uitkomen daarvan ook bekeken en besloten er nooit aan te beginnen. Alles wat ik doen wil kan ik met VB6 bereiken, dus de noodzaak is er niet. Delphi heb ik indertijd ook geprobeerd en werkt goed, maar omdat ik al vrij veel tijd aan VB had besteed en het grondig beheersen van meerdere talen te veel tijd kost, heb ik dat laten vallen. De programmeertal Pascal werkt wel prettig.

Offline Ronald

  • Forum Manager
  • *****
  • Berichten: 1.856
  • Geslacht: Man
    • NL Computer Forum
Re: Gestructureerde foutbehandeling in VB 6
« Reactie #2 Gepost op: 29 november 2009, 21:30:05 »
Hallo jvdpeet,

Ik vind VB6 ook nog steeds een leuke programmeertaal, er is nog steeds veel voor te vinden! Zelfs onder Windows 7 kun je er nog mee werken. ;)

Wat heb jij zoal in VB6 gemaakt?

Groeten,

Ronald
Forum Manager NL Computer Forum
Microsoft Certified Solutions Expert (MCSE) - Business Intelligence