Traiter des fichiers volumineux ?

Traiter des fichiers volumineux ? - Delphi/Pascal - Programmation

Marsh Posté le 01-08-2005 à 11:20:57    

Bonjour,
 
voila je voulais savoir si certains d entre vous n auraient pas qq liens ou methodes pour traiter des fichiers TRES volumineux style spool.
Apres qq recherches on ne trouve que ce lien : http://sjames.developpez.com/BigFiles/ mais ca me parait tres usine a gaz malgre tout, qqun aurait il qqchose de + simple et clair a proposer ?
 
Merci d avance

Reply

Marsh Posté le 01-08-2005 à 11:20:57   

Reply

Marsh Posté le 01-08-2005 à 13:21:11    

Je ne comprend pas très bien ton problème.
Pour un traitement bêtement sequentiel, la bonne vieille Trinité AssignFile-Reset-CloseFile reste parfaite (je traite des fichier  de 2 Go avec)
Pour un traitement moins sequentiel, là, je dirais (sans grand risque de me tromper  :D ) que ça dépend de ton problème précis


Message édité par Zozol le 01-08-2005 à 13:22:15
Reply

Marsh Posté le 01-08-2005 à 15:06:47    

Ben assigné tout en memoire ca me parait un peu lourd qd meme, et niveau temps de traitement ca ne doit pas etre la joie non plus...
 
je dev une petite appli qui sera surement deployee sur des postes client TSE donc la encore les assignfile ca risque de ne pas etre folichon.
 
Mais bon, apres mure reflexion depuis ce matin, mon pb n pas reellement l utilisation de TFileStream par morceaux ou non, mais plutot comment decouper mon fichier spool d entree proprement.
Donc a vrai dire je peux surement fermer le topic :p
 
Merci qd meme ;)

Reply

Marsh Posté le 01-08-2005 à 17:32:26    

Ben si c'est plus un problème, tout vas bien  ;)  
Ceci dit, AssignFile (La bonne vieille procedure hérité du  pascal, je ne me suis jamais servi de TFileStream) ne charge strictement rien en memoire (bon... OK.. 4 octets pour le handle... Peut etre mème 8 sur un systeme 64 bits) et la function "read" se contente de remplir les variables que tu lui demande de remplir (charge à toi de te débrouiller avec un nombre limité de variable). Donc, aucun problème de memoire ou de temp processeur.
De toute facon, si tu a un doute, le ctr-alt-supr est ton ami. Il te donera la quantité de memoire utilisé(celle du panneau "processus n'est pas toujours fiable, mais la mémoire totale consommé (panneau performance) te montrera bien si tout d'un coup, il y a 100 Mo qui parte "en fumée" )


Message édité par Zozol le 01-08-2005 à 17:36:45
Reply

Marsh Posté le 01-08-2005 à 17:48:24    

TFileStream fonctionne de la même manière, mais il utilise une position et une taille en Int64 et n'est donc pas limité à 2 Go.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-08-2005 à 10:10:29    

Zozol a écrit :

Ben si c'est plus un problème, tout vas bien  ;)  
Ceci dit, AssignFile (La bonne vieille procedure hérité du  pascal, je ne me suis jamais servi de TFileStream) ne charge strictement rien en memoire (bon... OK.. 4 octets pour le handle... Peut etre mème 8 sur un systeme 64 bits) et la function "read" se contente de remplir les variables que tu lui demande de remplir (charge à toi de te débrouiller avec un nombre limité de variable). Donc, aucun problème de memoire ou de temp processeur.
De toute facon, si tu a un doute, le ctr-alt-supr est ton ami. Il te donera la quantité de memoire utilisé(celle du panneau "processus n'est pas toujours fiable, mais la mémoire totale consommé (panneau performance) te montrera bien si tout d'un coup, il y a 100 Mo qui parte "en fumée" )


 
Merci pour toutes ces explications ;)
 
c'est ce que j'utilise depuis un moment (avec readln en general pour du traitement de fichier texte), mais dans ton exemple tu parts du principe que tu connais la structure de donnees que tu recupere, dans le cas contraire et si tu dois en qqsorte parser le fichier je ne suis pas certain que cela soit le plus conseille...
La gestion par flux (TFileStream) est pas mal, mais comme je le disais mon pb finalement apres reflexion c surtout de decouper mon fichier spool qui est assez merdique (plein d elements pas vraiment repetitifs qui ne servent a rien, je vois de l unicode pour indiquer le debut et la fin "d une page" bref :s)
 
a+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed