OVH Cloud OVH Cloud

Mémoire UP ???

5 réponses
Avatar
Karl
Bonjour,
Dans une grid je charge mes données à partir d'un fichier texte.
tout fonctionne bien, mais, après qq. ouvertures d'autre fichiers je
constate
un ralentissement de mon programme.

Dans le gestionnaire de tache de Windows la mémoire (sur mon .EXE) augmente
à chaque chargement d'un nouveau fichiers, ce qui ralenti sérieusement mon
application.

Je suppose que l'ancien fichier doit-être toujours présent ???

Pouvez-vous me dire pourquoi et comment y remédier ,

Par avance Merci
Karl

Pour info : J'ouvre mon fichier avec un Input suivi d'un Do Loop pour le
remplissage de mes cellules de la grid.

5 réponses

Avatar
Patrice Henrio
sans doute la lecture se fait dans un tableau dynamique et tu as oublié la
ligne erase Tableau


"Karl" a écrit dans le message de news:
45adf07f$0$22788$
Bonjour,
Dans une grid je charge mes données à partir d'un fichier texte.
tout fonctionne bien, mais, après qq. ouvertures d'autre fichiers je
constate
un ralentissement de mon programme.

Dans le gestionnaire de tache de Windows la mémoire (sur mon .EXE)
augmente
à chaque chargement d'un nouveau fichiers, ce qui ralenti sérieusement mon
application.

Je suppose que l'ancien fichier doit-être toujours présent ???

Pouvez-vous me dire pourquoi et comment y remédier ,

Par avance Merci
Karl

Pour info : J'ouvre mon fichier avec un Input suivi d'un Do Loop pour le
remplissage de mes cellules de la grid.





Avatar
Karl
Bonsoir,
Effectivement c'est un tableau dynamique, à la fin j'ai bien mis un Erase +
qq. recettes "grand-mère" mais sans succès.
En fait la lenteur est constaté quand le prog et compilé.
Peut-être que cela provient du contrôle ActiveX Scgrid (pour une fois que
j'en achète un)
Voici la fonction de mon code des fois qu'il y ai une "bourre" (je débute)
Cordialement Karl


'----------- The code-------------------
Public Function Ouvre_Base(FicBase As String)
Dim sLigne As String
Dim sDonnees() As String
Dim I As Long, nbl As Long
Dim F As Integer
Dim nCol As Long

sSeparateur = ";"

On Error GoTo ErrHandler

SCGrid1.Redraw = False
SCGrid1.Enabled = False
SCGrid1.Visible = False

SCGrid1.ClearCol (Cols): SCGrid1.ClearRow (Rows) 'efface la grille

LabNomFic.Caption = ""
' Extrait le nom du fichier
LabNomFic.Caption = Right(FicBase, Len(FicBase) - InStrRev(FicBase,
"", -1, 1))
If FicBase <> "" Then
FicBase = App.Path & "" & LabNomFic.Caption
nbl = 1

' Compte le nombre de lignes dans le fichier
F = FreeFile
Open FicBase For Input As #F
While Not EOF(F)
Line Input #F, sLigne
nbl = nbl + 1
Wend
Close #F

' Initialisation du nombre de lignes dans SCGrid1
SCGrid1.Rows = nbl - 1
nCol = 11 ' colones

nbl = -1

' Remplissage du flexgrid
F = FreeFile
Open FicBase For Input As #F
Do While Not EOF(F)
Line Input #F, sLigne
sDonnees = Split(sLigne, sSeparateur)

'Calcul la position et place les infos
nbl = nbl + 1
For I = 1 To nCol - 1
SCGrid1.Text(nbl, I - 1) = sDonnees(I - 1)
SCGrid1.Text(nbl, -1) = Format(nbl + 1, "0000") 'mise en forme
Col1

Next
Loop
Close #F

End If

Erase sDonnees()

SCGrid1.Redraw = True
SCGrid1.Enabled = True
SCGrid1.Visible = True

ErrHandler:


Exit Function

End Function

'-----------------------------Fin
Avatar
Jean-marc
Karl wrote:
Bonsoir,
Effectivement c'est un tableau dynamique, à la fin j'ai bien mis un
Erase + qq. recettes "grand-mère" mais sans succès.
En fait la lenteur est constaté quand le prog et compilé.
Peut-être que cela provient du contrôle ActiveX Scgrid (pour une
fois que j'en achète un)
Voici la fonction de mon code des fois qu'il y ai une "bourre" (je
débute) Cordialement Karl



Hello Karl,

Un peu difficile de dire ce qui ne va pas, à priori tout semble correct.
Les hyppothèses:
- Il y aurait vraiment un souci avec l'activeX Scgrid ?
- OU alors; il est possible que le programme ne fasse pas ce que tu
crois et qu'il sorte toujours brutalement via le On error ...

Comme le ErrHandler n'a à priori pas de raisons d'être, je ferais ceci si
j'étais toi:

j'ai modifié juste la fin de la procédure, ce qui suit Erase sDonnees() :

Erase sDonnees()

SCGrid1.Redraw = True
SCGrid1.Enabled = True
SCGrid1.Visible = True

FinProc:
Exit function

ErrHandler:
Msgbox "erreur ! " & err.descritpion
Resume FinProc
End Function

Comme ceci, si il y a des erreurs déclenchées dans la procédure, tu
le sauras et tu pourras y remédier.

Mettre des On error Goto ... sans rien de plus est dangereux car cela
peut masquer des erreurs de conceptions, ce qui n'est évidemment pas le but!

Bonne suite!

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Karl
Bonjour,
J'avais viré la gestion d'erreur pendant mes tests, allié au debug.print
pour être bien sur que mes variable étaient bien à zéro.....Mais, je pense
que c'est le Scgrid.
Je vais continuer a chercher pour voir d'ou vient cette fuite de mémoire. En
dernier recourt je vais demander au concepteur de l'ActiveX, mais il faudra
que je me concentre pour faire un laïus bien explicite en anglais (bien loin
déjà)

Merci pour ton effort Jean marc

Bonne journée
Kael

"Jean-marc" a écrit dans le message
de news: eosma9$5vg$
Karl wrote:
Bonsoir,
Effectivement c'est un tableau dynamique, à la fin j'ai bien mis un
Erase + qq. recettes "grand-mère" mais sans succès.
En fait la lenteur est constaté quand le prog et compilé.
Peut-être que cela provient du contrôle ActiveX Scgrid (pour une
fois que j'en achète un)
Voici la fonction de mon code des fois qu'il y ai une "bourre" (je
débute) Cordialement Karl



Hello Karl,

Un peu difficile de dire ce qui ne va pas, à priori tout semble correct.
Les hyppothèses:
- Il y aurait vraiment un souci avec l'activeX Scgrid ?
- OU alors; il est possible que le programme ne fasse pas ce que tu
crois et qu'il sorte toujours brutalement via le On error ...

Comme le ErrHandler n'a à priori pas de raisons d'être, je ferais ceci si
j'étais toi:

j'ai modifié juste la fin de la procédure, ce qui suit Erase sDonnees() :

Erase sDonnees()

SCGrid1.Redraw = True
SCGrid1.Enabled = True
SCGrid1.Visible = True

FinProc:
Exit function

ErrHandler:
Msgbox "erreur ! " & err.descritpion
Resume FinProc
End Function

Comme ceci, si il y a des erreurs déclenchées dans la procédure, tu
le sauras et tu pourras y remédier.

Mettre des On error Goto ... sans rien de plus est dangereux car cela
peut masquer des erreurs de conceptions, ce qui n'est évidemment pas le
but!

Bonne suite!

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/




Avatar
Karl
Je reviens pour apporter une dernière observation sur le comportement du
programme et de l'ActiveX Scgrid.
Développé sous XP Home en VB6, j'ai transporté mon application sur Windows
2000 / VB6 (au pro) et là curieusement, je n'ai pas le problème de lenteur
d'affichage de la grille.

Bon, si qq'un connaît l'explication du phénomène, je serais moins "newbit"
aujourd'hui.

Karl