IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

OpenfileDialog Memoire corrompue


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 349
    Par défaut OpenfileDialog Memoire corrompue
    Salut,

    Je developpe une application de gestion en vb.net/access/excel

    Dans mon application j'ai besoin d'importer des données venant d'un fichier texte.

    Le problème c'est que l'openfiledialog plante quand je veux l'ouvrir.

    A noté que je vise le framework 4 client profile, que sur windows XP je n'ai jamais eu ce problème alors que sur seven j'ai ce problème.


    System.AccessViolationException was unhandled
    Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
    Source=System.Windows.Forms
    StackTrace:
    at System.Windows.Forms.FileDialogNative.IFileDialog.Show(IntPtr parent)
    at System.Windows.Forms.FileDialog.RunDialogVista(IntPtr hWndOwner)
    at System.Windows.Forms.FileDialog.RunDialog(IntPtr hWndOwner)
    at System.Windows.Forms.CommonDialog.ShowDialog(IWin32Window owner)
    at Gymnastique.MainForm.importer() in C:\Users\said\developpement\Actions Professionnel\GymN\version 2\GymN\GymN\MainForm.vb:line 1844
    at Gymnastique.MainForm.ToolStripMenuItem1_Click(Object sender, EventArgs e) in C:\Users\said\developpement\Actions Professionnel\GymN\version 2\GymN\GymN\MainForm.vb:line 2109
    at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
    at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
    at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
    at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
    at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
    at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
    at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
    at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
    at System.Windows.Forms.ToolStrip.WndProc(Message& m)
    at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    at System.Windows.Forms.Application.Run(ApplicationContext context)
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    at Gymnastique.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
    InnerException:
    merci de votre aide

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    étrange, peut etre un problème de compilation ou de ciblage
    es tu bien en release ?
    essaye de compiler en x86 ...

    montre nous aussi le code qui mène à cette erreur

    sinon google a l'air de donner quelques pistes

    (généralement on ne distribue pas une application sans try catch)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 349
    Par défaut
    Alors je suis en mode realease x86
    J'ai bien un mis un try catch mais pas pour l'openfiledialog juste après
    le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
     
     ' separateur decimal "." pour l'importation et le calcul
            DecimalSeparator = "."
     
     
            Dim nombre As String = ""
     
            'si l'eleve est dans la base de donnée vrai = 1 sinon 0
            Dim vrai As Integer = 0
     
            Dim OfdImporter As New OpenFileDialog
     
            OfdImporter.Filter = "Fichiers texte *.txt|*.txt"""
            OfdImporter.Title = " Importer "
     
            With OfdImporter
     
     
     
     
     
                If (.ShowDialog(Me) = System.Windows.Forms.DialogResult.Cancel) Then
     
                    Exit Sub
     
                Else
     
                    Dim myfile As String
     
                    'recoit le fichier d'openfiledialog
                    myfile = OfdImporter.FileName
     
                    Dim Fichier As New StreamReader(myfile)
     
                    'stocke les enregistrements dans un tableau
                    Dim Ligne() As String
     
                    Dim da As New OleDb.OleDbDataAdapter(afficherEleve, cnx)
     
                    Dim ds2 As New DataSet
     
                    Try
     
                        While Fichier.Peek <> -1
     
     
                            Ligne = Fichier.ReadLine.Replace(",", ".").Split(";")
     
     
                            Dim inserer As String = " insert into eleves (num_licence_elev, nom_elev, prenom_elev, lycee_elev, ville_elev) " & _
                                                                " values ( " & Ligne(0) & ", '" & Ligne(1) & "', '" & Ligne(2) & "', " & Ligne(3) & ", '" & Ligne(4) & "' )"
     
                            Dim mumu As String = String.Empty
     
                            'stocke le numero de licence
                            mumu = Ligne(0)
     
                            Dim lire As String = "select num_licence_elev from eleves where " & mumu & ""
                            Dim cmd As New OleDb.OleDbCommand(inserer, cnx)
     
                            ' retourne 1 sii un eleve est deja dans la table
                            nombre = " select count(num_licence_elev) from eleves where num_licence_elev = " & mumu
     
     
                            Dim scalar As New OleDb.OleDbCommand(nombre, cnx)
     
                            cnx.Open()
                            ' retourne une valeur
                            vrai = scalar.ExecuteScalar
                            cnx.Close()
     
     
                            'si l'eleve n'est pas dans la bdd alors on l'insere
                            If vrai = 0 Then
     
                                cnx.Open()
                                cmd.ExecuteScalar()
                                cnx.Close()
     
     
                            End If
     
     
     
     
     
                            ' vide la chaine de caractere 
     
                            inserer = String.Empty
                            vrai = 0
     
     
                            '''''''''''''''''''''''''''''''''''''''''''''''''''''
                            ' insertion notes Saut 
     
                            inserer = " insert into Note_eleve_saut(num_licence_elev,saut1_envol1, saut1_appui, saut1_envol2, saut1_reception, saut1_note_finale, saut2_envol1, saut2_appui, saut2_envol2, saut2_reception, saut2_note_finale) " & _
                            " Values ( " & Ligne(0) & " , " & Ligne(5) & " , " & Ligne(6) & ", " & Ligne(7) & ", " & Ligne(8) & ", " & Ligne(9) & ", " & Ligne(10) & " , " & Ligne(11) & ", " & Ligne(12) & ", " & Ligne(13) & ", " & Ligne(14) & ")"
     
     
                            cmd = New OleDb.OleDbCommand(inserer, cnx)
     
                            ' retourne 1 sii un eleve est deja dans la table
                            nombre = " select count(num_licence_elev) from Note_eleve_saut where num_licence_elev = " & mumu
     
                            scalar = New OleDb.OleDbCommand(nombre, cnx)
     
                            cnx.Open()
                            vrai = scalar.ExecuteScalar()
                            cnx.Close()
     
     
                            ' si l'eleve n'est pas dans la bdd et toutes ses notes à zéro alors on insere les données
     
                            If vrai = 0 And Ligne(5) > 0 And Ligne(6) > 0 And Ligne(7) > 0 And Ligne(8) > 0 And Ligne(9) > 0 And Ligne(10) > 0 And Ligne(11) > 0 And Ligne(12) > 0 And Ligne(13) > 0 And Ligne(14) > 0 Then
     
                                cnx.Open()
                                cmd.ExecuteNonQuery()
                                cnx.Close()
     
     
     
                            End If
     
     
     
                            '''''''''''''''''''''''''''''''''''''''''''''''''''''
                            ' insertion notes Sol
                            vrai = 0
                            inserer = " insert into note_elev_sol(num_licence_elev, sol1_difficulte,sol1_execution, sol1_bonus, sol1_note_finale, sol2_difficulte, sol2_execution, sol2_bonus, sol2_note_finale) " & _
                            " Values (" & Ligne(0) & ", " & Ligne(15) & ", " & Ligne(16) & ", " & Ligne(17) & ", " & Ligne(18) & ", " & Ligne(19) & ", " & Ligne(20) & ", " & Ligne(21) & ", " & Ligne(22) & " )"
     
                            cmd = New OleDb.OleDbCommand(inserer, cnx)
     
                            ' retourne 1 sii un eleve est deja dans la table
                            nombre = " select count(num_licence_elev) from note_elev_sol where num_licence_elev = " & mumu
     
                            scalar = New OleDb.OleDbCommand(nombre, cnx)
     
                            cnx.Open()
                            vrai = scalar.ExecuteScalar()
                            cnx.Close()
     
                            ' si l'eleve n'est pas dans la bdd et toutes ses notes à zéro alors on insere les données
                            If vrai = 0 And Ligne(15) > 0 And Ligne(16) > 0 And Ligne(17) > 0 And Ligne(18) > 0 And Ligne(19) > 0 And Ligne(20) > 0 And Ligne(21) > 0 And Ligne(22) > 0 Then
                                cnx.Open()
                                cmd.ExecuteNonQuery()
                                cnx.Close()
     
     
     
                            End If
     
     
                            '''''''''''''''''''''''''''''''''''''''''''''''''''''
     
                            ' vide la chaine de caractere 
     
                            inserer = String.Empty
                            vrai = 0
     
     
     
                            '''''''''''''''''''''''''''''''''''''''''''''''''''''
                            ' insertion notes Barre
     
                            inserer = " insert into note_elev_barre(num_licence_elev, barre1_difficulte, barre1_execution, barre1_bonus, barre1_note_finale, barre2_difficulte, barre2_execution, barre2_bonus, barre2_note_finale) " & _
                            " Values (" & Ligne(0) & ", " & Ligne(23) & ", " & Ligne(24) & ", " & Ligne(25) & ", " & Ligne(26) & ", " & Ligne(27) & ", " & Ligne(28) & ", " & Ligne(29) & ", " & Ligne(30) & " )"
     
                            cmd = New OleDb.OleDbCommand(inserer, cnx)
     
                            ' retourne 1 sii un eleve est deja dans la table
                            nombre = " select count(num_licence_elev) from note_elev_barre where num_licence_elev = " & mumu
     
                            scalar = New OleDb.OleDbCommand(nombre, cnx)
     
                            cnx.Open()
                            vrai = scalar.ExecuteScalar()
                            cnx.Close()
     
                            ' si l'eleve n'est pas dans la bdd et toutes ses notes à zéro alors on insere les données
                            If vrai = 0 And Ligne(23) > 0 And Ligne(24) > 0 And Ligne(25) > 0 And Ligne(26) > 0 And Ligne(27) > 0 And Ligne(28) > 0 And Ligne(29) > 0 And Ligne(30) > 0 Then
                                cnx.Open()
                                cmd.ExecuteNonQuery()
                                cnx.Close()
     
     
     
                            End If
     
                            '''''''''''''''''''''''''''''''''''''''''''''''''''''
     
                            ' vide la chaine de caractere 
     
                            inserer = String.Empty
     
     
     
                            vrai = 0
                            '''''''''''''''''''''''''''''''''''''''''''''''''''''
                            ' insertion notes Poutre
     
                            inserer = " insert into note_elev_poutre( num_licence_elev, poutre1_difficulte, poutre1_execution, poutre1_bonus, poutre1_note_finale, poutre2_difficulte, poutre2_execution, poutre2_bonus, poutre2_note_finale) " & _
                            " Values (" & Ligne(0) & ", " & Ligne(31) & ", " & Ligne(32) & " , " & Ligne(33) & ", " & Ligne(34) & ", " & Ligne(35) & ", " & Ligne(36) & ", " & Ligne(37) & ", " & Ligne(38) & ")"
     
                            cmd = New OleDb.OleDbCommand(inserer, cnx)
     
                            ' retourne 1 sii un eleve est deja dans la table
                            nombre = " select count(num_licence_elev) from note_elev_poutre where num_licence_elev = " & mumu
     
                            scalar = New OleDb.OleDbCommand(nombre, cnx)
     
                            cnx.Open()
                            vrai = scalar.ExecuteScalar()
                            cnx.Close()
     
     
                            ' si l'eleve n'est pas dans la bdd et toutes ses notes à zéro alors on insere les données
     
                            If vrai = 0 And Ligne(31) > 0 And Ligne(32) > 0 And Ligne(33) > 0 And Ligne(34) > 0 And Ligne(35) > 0 And Ligne(36) > 0 And Ligne(37) > 0 And Ligne(38) > 0 Then
                                cnx.Open()
                                cmd.ExecuteNonQuery()
                                cnx.Close()
     
     
     
                            End If
     
                            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
                            ' vide la chaine de caractere 
     
                            inserer = String.Empty
     
                            vrai = 0
     
     
                            '''''''''''''''''''''''''''''''''''''''''''''''''''''
                            ' insertion notes Poutre
     
                            inserer = " insert into ExamTheo( num_licence_elev, Theo1, Theo2) " & _
                            " Values (" & Ligne(0) & ", " & Ligne(39) & ", " & Ligne(40) & ")"
     
                            cmd = New OleDb.OleDbCommand(inserer, cnx)
     
                            ' retourne 1 sii un eleve est deja dans la table
                            nombre = " select count(num_licence_elev) from ExamTheo where num_licence_elev = " & mumu
     
                            scalar = New OleDb.OleDbCommand(nombre, cnx)
     
                            cnx.Open()
                            vrai = scalar.ExecuteScalar()
                            cnx.Close()
     
                            ' si l'eleve n'est pas dans la bdd et toutes ses notes à zéro alors on insere les données
                            If vrai = 0 And Ligne(39) > 0 And Ligne(40) > 0 Then
     
                                cnx.Open()
                                cmd.ExecuteNonQuery()
                                cnx.Close()
     
     
     
                            End If
     
                            inserer = ""
     
                        End While
     
     
     
                        ds.Clear()
     
                        Dim da5 As New OleDb.OleDbDataAdapter(afficherEleve, cnx)
                        cnx.Open()
                        da5.Fill(ds, "eleves")
                        cnx.Close()
     
     
                        Fichier.Close()
     
                    Catch ex As Exception
                        MsgBox(ex.Message.ToString + MsgBoxStyle.Critical)
                    Finally
                        Fichier.Close()
     
                    End Try
     
     
     
                    Me.DgMainForm.DataSource = ds.Tables("eleves")
     
                    ' Me.Close
                    myfile = ""
     
     
                End If
     
            End With
     
            DecimalSeparator = ","
    Attention c'est vraiment du code sale . Si de surcroit vous avez des pistes pour l'amélioration je dis pas non...

Discussions similaires

  1. [Mémoire] Probleme de memoire corrompue
    Par deviljul dans le forum Composants
    Réponses: 5
    Dernier message: 02/07/2009, 17h29
  2. [Debutant] memoire corrompu?
    Par Gotmere dans le forum Débuter
    Réponses: 6
    Dernier message: 04/01/2008, 10h32
  3. [LG]Mémoire dynamique
    Par FJUILLET dans le forum Langage
    Réponses: 5
    Dernier message: 10/02/2004, 11h15
  4. gestionnaire de memoire
    Par elone dans le forum C
    Réponses: 2
    Dernier message: 23/01/2003, 00h31
  5. récupérer la memoire et tableau dynamique
    Par Guigui_ dans le forum Langage
    Réponses: 6
    Dernier message: 06/01/2003, 08h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo