[VB] Errror bij afsluiten.

Pagina: 1
Acties:

  • Benadski
  • Registratie: November 2001
  • Laatst online: 11-08 20:35
Als ik mijn zelfgeschreven VB applicatie afsluit met het kruisje (niet via het menu) dan krijg ik de volgende error: The exeption Floating-point inexact result (0xc000008f) occurred in the application at location (0x77eab2f0). Beide opties (menu en kruisje) komen op precies dezelfde code uit, dus ik vind het maar raar hoe dit kan.

Ik kan dan kiezen om te debuggen, maar da's op assemblerniveau en daar heb ik natuurlijk geen (_|_) aan.

Het vreemde is dat het alleen gebeurt na het compilen. Is dit een bug in Visual Basic zelf of moet ik ergens anders zoeken?

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Debug je code eens.
Zet een breakpoint op jouw code in de OnClose event, en stap door je code.

Ga na op welke regel je die fout krijgt, en waarom.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 is dol op gokken..

http://support.microsoft....7/6/30.ASP&NoWebContent=1

GEbruik je heel misschien een CoolBar Control?

Gevonden trouwens met Google

[ Voor 51% gewijzigd door gorgi_19 op 09-07-2003 12:16 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Benadski
  • Registratie: November 2001
  • Laatst online: 11-08 20:35
Debuggen heeft geen zin, al geprobeert, de error komt pas na het End statement iig. en krijg ik NIET in visual Basic, alleen na het compilen!

Een Coolbar Control gebruik ik niet (had ik ook al gevonden), wel een Toolbar, maar dat moet goed gaan d8 ik...

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

http://beta.experts-excha...ual_Basic/Q_20125975.html

* gorgi_19 vindt wel dat de TS wel erg scheutig is met info.....

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Ga eens na hoeveel en welke objecten je allemaal aanmaakt.
Set je objecten allemaal op nothing voor je de applicatie afsluit!

* pjonk denkt dat er bij het destructen van de objecten het een en ander fout gaat.
Trouwens als je een form afsluit gebruik altijd Unload Form1 en nooit End!

It’s nice to be important but it’s more important to be nice


  • Benadski
  • Registratie: November 2001
  • Laatst online: 11-08 20:35
Welke info heb je nodig? De exit routine? Die gaat zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Private Sub MDIForm_Unload(Cancel As Integer)
On Error Resume Next
    'positie en formaat(entry) van het venster in de "windows registry" bewaren (SaveSetting)
    If Not chk = 123 Then mnuSluiten_Click
End Sub

Private Sub mnuSluiten_Click()
    Dim frm As Form
    
    chk = 123   'Voorkomt herhaalde aanroep van deze sub
    
    MsgBox "Bedankt voor uw gebruik van DATADIER, tot ziens !!!", vbExclamation, App.Title
    
    For Each frm In Forms
        If Not frm.Name = Me.Name Then
            Unload frm
            Set frm = Nothing 'verwijder pointer naar de form
        End If
    Next frm
    
    For Each frm In Forms 'Alleen de hoofdform staat nog open.
        If Me.WindowState <> vbMinimized And Me.WindowState <> vbMaximized Then 
            SaveSetting App.Title, "Settings", "MainLeft", Me.Left                 
            SaveSetting App.Title, "Settings", "MainTop", Me.Top                   
            SaveSetting App.Title, "Settings", "MainWidth", Me.Width   
            SaveSetting App.Title, "Settings", "MainHeight", Me.Height
        End If
    
        Unload Me 'Nu wordt de hoofdform afgesloten
        Set frm = Nothing 'verwijder pointer naar de hoofdform
    Next frm
    
     End 'Einde programma!

End Sub

De volledige code kan ik niet posten, die beslaat meer dan 400 A4-tjes... Het is een databaseprogramma voor de Dierenambulance (ja, nog steeds mee bezig :()

SP5 had ik al geinstalleerd (nog ff gechecked voor de zekerheid), dus dat kan het ook niet zijn.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Lees dat hele Experts-Exchange topic van gorgi_19 ff door, d'r staan veel meer opties in dan alleen SP5.

Professionele website nodig?


  • Benadski
  • Registratie: November 2001
  • Laatst online: 11-08 20:35
Ja, dat Numega failsafe gebeuren, alleen werkt de website niet en het is niet gratis, geen optie dus helaas. Voor de rest staat er niet veel zo te zien...

Over die objecten... Hoe kan ik zien welke er nog open staan voordat de End uitgevoerd wordt? Ik gebruik er enorm veel (en sluit ze imo ook goed af), misschien dat er toch een open blijft staan?

  • EricW
  • Registratie: Augustus 2002
  • Laatst online: 28-11-2023
Je roept vanuit je MDIForm_Unload een sub op waarin het formulier wordt ge-unload. Da's dus dubbelop en daar gaat het mis volgens mij...

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

EricW schreef op 09 juli 2003 @ 12:50:
Je roept vanuit je MDIForm_Unload een sub op waarin het formulier wordt ge-unload. Da's dus dubbelop en daar gaat het mis volgens mij...
En die kant wilde ik ook net op. Dus OF je maakt de code een tweede keer en zet hem in je _Unload event, maar dan zonder het unloaden van het form erbij, OF zet in de _Unload event eerst de cancel op 1 en roep vervolgens jouw code aan.

Volgens mij gaat het dan helemaal goedkomen.

[ Voor 7% gewijzigd door OZ-Gump op 09-07-2003 12:56 ]

My personal website


  • EricW
  • Registratie: Augustus 2002
  • Laatst online: 28-11-2023
Nog even offtopic, maar wat heeft dit voor nut:

code:
1
For Each frm In Forms 'Alleen de hoofdform staat nog open.


Beetje nutteloos om voor 1 form een lus te maken imo (en in de tussenliggende code wordt er overigens niet eens gebruik van gemaakt (me ipv frm)).

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

OZ-Gump schreef op 09 July 2003 @ 12:55:
En die kant wilde ik ook net op. Dus OF je maakt de code een tweede keer en zet hem in je _Unload event, maar dan zonder het unloaden van het form erbij, OF zet in de _Unload event eerst de cancel op 1 en roep vervolgens jouw code aan.

Volgens mij gaat het dan helemaal goedkomen.
Uh bijna ;) In de mnuSluiten_Click zet je alleen Unload Me.
In de MDIForm-unload event sla je eventueel de positie op. Childwindows worden in principe al gesloten door VB zelf dus daar hoef je op zich niks voor te doen. En that's it, geen End want dat is nergens voor nodig (nooit!).
En zo'n messagebox bij het afsluiten is niet zo prettig, vooral niet als je windows shutdown doet zonder eerst de programma's te sluiten, en je loopt vervolgens weg bij je pc... :)

Enne roep nooit vanuit een unload-event een method aan die de form unload, dan kun je best voor rare verassingen komen te staan. Form is geunload, maar je 'hangt' nog in het unload event (welke je canceld, om daarna opnieuw te unloaden).

Exact expert nodig?


  • Benadski
  • Registratie: November 2001
  • Laatst online: 11-08 20:35
Ok, bedankt allemaal! _/-\o_

Ik krijg nu geen error meer! Gelukkig... nu de rest nog. ;(

  • Benadski
  • Registratie: November 2001
  • Laatst online: 11-08 20:35
Ok, toch nog een error wat hiermee te maken heeft...

De applicatie blijft soms nog in het geheugen staan, en aangezien een stukje code kijkt of er nog een vorige instantie van het programma draait start ie niet op. Dat stukje code activeert namelijk de vorige en sluit de huidige af. Maar de vorige staat er waarschijnlijk niet helemaal meer, want deze komt niet tevoorschijn...

Ofwel, het afsluiten gaat soms niet goed.
Visual Basic:
1
2
3
4
5
6
7
8
9
Private Sub MDIForm_Unload(Cancel As Integer)
On Error Resume Next
    If Me.WindowState <> vbMinimized And Me.WindowState <> vbMaximized Then 
        SaveSetting App.Title, "Settings", "MainLeft", Me.Left                 
        SaveSetting App.Title, "Settings", "MainTop", Me.Top                  
        SaveSetting App.Title, "Settings", "MainWidth", Me.Width              
        SaveSetting App.Title, "Settings", "MainHeight", Me.Height
    End If
End Sub


Kan ik voor de "end if" geen end zetten (waarom is dit not done?), of ligt het probleem ergens anders?

[ Voor 14% gewijzigd door Benadski op 04-11-2003 13:03 . Reden: regels te lang ]


  • Devion
  • Registratie: Januari 2000
  • Laatst online: 07-08 19:10

Devion

Space for rent ;-)

Dit hele block voor het afsluiten is erg overgecompliceerd en 'vaag' :p

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
For Each frm In Forms
        If Not frm.Name = Me.Name Then
            Unload frm
            Set frm = Nothing 'verwijder pointer naar de form
        End If
    Next frm
    
    For Each frm In Forms 'Alleen de hoofdform staat nog open.
        If Me.WindowState <> vbMinimized And Me.WindowState <> vbMaximized Then 
            SaveSetting App.Title, "Settings", "MainLeft", Me.Left                 
            SaveSetting App.Title, "Settings", "MainTop", Me.Top                   
            SaveSetting App.Title, "Settings", "MainWidth", Me.Width   
            SaveSetting App.Title, "Settings", "MainHeight", Me.Height
        End If
    
        Unload Me 'Nu wordt de hoofdform afgesloten
        Set frm = Nothing 'verwijder pointer naar de hoofdform
    Next frm
    
     End 'Einde programma!


Zou moeten zijn...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    If Me.WindowState <> vbMinimized And Me.WindowState <> vbMaximized Then 
     SaveSetting App.Title, "Settings", "MainLeft", Me.Left                 
     SaveSetting App.Title, "Settings", "MainTop", Me.Top                   
     SaveSetting App.Title, "Settings", "MainWidth", Me.Width   
     SaveSetting App.Title, "Settings", "MainHeight", Me.Height
    End If
   ' umm dus als hij niet maximized is sla je op, anders niet??

    For Each frm In Forms 'Alleen de hoofdform staat nog open.
        if frm.name <> me.name then unload frm ' Dan sluit ie terminste 
        'niet alles in een keer anders kun je namelijk de rest  
        'niet uitvoeren na deze lijn.
    Next frm

   Unload me
   End 'Einde programma! ' Hier komt ie niet eens. :)



(kleine edit, anders was layout verkloot)

[ Voor 12% gewijzigd door Devion op 04-11-2003 13:12 ]


  • Benadski
  • Registratie: November 2001
  • Laatst online: 11-08 20:35
Sorry, dit hele vage stuk code is allang weg. Misschien had ik een nieuw topic moeten openen...

De code die ik als laatst gepost heb klopt niet, soms wordt het programma niet afgesloten. Of het zit ergens anders in, maar dat wil je niet uitzoeken in mijn code...

  • Devion
  • Registratie: Januari 2000
  • Laatst online: 07-08 19:10

Devion

Space for rent ;-)

= Master in lezen van chaotische code.. mede dankzij m'n eigen team van developers :-)

Mail me maar als je wilt dat ik het een keer bekijk.

  • Benadski
  • Registratie: November 2001
  • Laatst online: 11-08 20:35
Hehe, heb je een mailbox van >4Mb? Het is zo'n 400 A4-tjes code... Ga ik je niet aan doen, ik mag het niet eens volgens de verklaring die ik heb moeten tekenen. Alleen kleine stukjes code mag ik "sharen".

Maar uit je reactie maak ik op dat End niet nodig is (en niet werkt?) en het stukje code goed is? Dan moet ik een andere oplossing gaan zoeken, kan ik het programma niet wreed killen op een of andere manier in VB? Dan ben ik iig. van het gezeik van de klant af.
Pagina: 1