Merlinus90
Messages postés2Date d'inscriptionlundi 13 novembre 2006StatutMembreDernière intervention14 novembre 2006
-
13 nov. 2006 à 18:19
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
15 nov. 2006 à 09:25
Bonjour,
Je travaille plutot en VBA, mais ce ne doit pas être trop diférent.....
Je n'arrive pas à trouver sur le net ni nul part, comment vider le tampom memoire lorsque j'ecris dans un fichier de log
Comme les traitements sont longs, les commandes print ne sont executées que lorsque le reste du pgm à fait sont travail : refresh des requetes et generation de HTML.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 15 nov. 2006 à 09:25
Il faut savoir que, en VB toutes les écritures vers des fichiers sont en réalité écrites dans le tampon du fichier et non pas directement sur le disque. Ensuite c'est Windows qui lorsque le tampon atteint une certaine taille, décide de vider (flusher) le tampon sur le disque dur. Il n'y a pas à ma connaissance de commande simple en VB pour forcer le flushage (à part Close).
La solution sera de passer par les API, comme indiqué dans les liens de ShareVB
Extrait du MP envoyer par Merlinus90 :
Ce qui se passe chez moi, c'est qu'il y a les 1er print mais dès qu'a
lieu la 1ere iteration sur le refresh, les print suivants
n'apparaissent qu'une fois l'itération terminée (instruction loop)
Ci-après en pseudo code ;-):
Main()
{
open fichier_log
print " Début du traitement" >> fichier_log
open fic_config_des_fichiers_à_traiter
until EOF
print " traiter doc N° i" >> fichier_log
open doc
RefreshDoc()
print " Fin du refresh : ...." >> fichier_log
SaveDoc()
print " fin de génération HTML" >> fichier_log
loop
print " fin de traitement" >> fichier_log
close fic_config_des_fichiers_à_traiter
close fichier_log
}
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 14 nov. 2006 à 09:26
salut,
oui, doevents peut être mais je pense que ce n'est pas assuré qu'un doevents déclenche obligatoirement le flush...doevents c'est plutôt pour ne pas bloquer l'affichage des forms et les évènements utilisateurs...enfin je crois...