Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1371 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Buffer dynamique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Buffer dynamique

n°1033781
Inekman
Posté le 03-04-2005 à 19:38:13  profilanswer
 

Yop les zoulou :hello:,
 
Le sujet du problème est simple  :) :
 
- Un fichier source à partir duquel on lit les données,
- Un fichier destination dans lequel on écrit les données lues précédement,
- Un buffer qui est chargé de contenir les données lues depuis source pour alimenter l'écriture dans destination
 
Fidèle à moi-même, je ne sais pas du tout quelle taille donner à ce buffer de type tableau de char mais pour l'instant j'ai mis 64ko parce que ça sonne bien :D.
 
Or, il se trouve que pendant la lecture/écriture, il arrive (souvent) qu'on se trouve dans le cas suivant :
 
- lorsqu'on arrive à la fin de la lecture du fichier source, la taille des données restantes à lire est inférieur à la taille du buffer (qui est de 65536 octets).
 
Apparement, on peut pas lire par exemple les 58ko restants d'un fichier dans un buffer de 64ko et donc ça bloque à cet endroit... :sweat:  
 
Le but du jeu serait donc de définir la taille du buffer à la taille des données restantes à lire...mais je sais pas comment qu'on fait :D  
 
Un grand help à vous tous (antp) :jap:

mood
Publicité
Posté le 03-04-2005 à 19:38:13  profilanswer
 

n°1033902
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-04-2005 à 21:38:05  profilanswer
 

Comment ça "on peut pas" ? Tu lis avec quoi ? Si c'est avec un TFileStream il y a Read ou ReadBuffer (je sais plus lequel) qui te donne la longueur réelle lue.
Note qu'avec le TFileStream tu fais un CopyFrom et c'est bon :D Ou encore plus simple t'appelles CopyFile ou SHFileOperation :o


Message édité par antp le 03-04-2005 à 21:38:42

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1033923
Inekman
Posté le 03-04-2005 à 22:24:17  profilanswer
 

Je suis dans ma période Api Win32, donc je me limite à CreateFile, ReadFile, WriteFile, SetFilePointer et CloseHandle.
 


buffer: array[0..65535] of char;
 
 
ZeroMemory(@buffer, sizeof(buffer));
 
[...]
 
Source := CreateFile(PChar(src), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, 0);
Dest:= CreateFile(PChar(dest), GENERIC_WRITE, 0, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
 
[...]
 
alire := sizeof(buffer);
aecrire := alire;
totalecrit := 0;
 
while totalecrit < total do
begin
// si "alire" est inférieur à la taille du buffer,  
// alors la fonction ne lit rien du tout :(
 
   ReadFile(Source, buffer, alire, lu, nil);
   WriteFile(Dest, buffer, aecrire, ecrit, nil);
 
   if totalecrit + alire > total then
      begin
         alire := total  - totalecrit ;
         aecrire := alire;
      end;
end;


Message édité par Inekman le 03-04-2005 à 22:25:20
n°1034814
Inekman
Posté le 04-04-2005 à 21:20:54  profilanswer
 

avouez que c'est bizarre quand même :'(

n°1035314
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-04-2005 à 09:42:06  profilanswer
 

Bizarre... Dans Delphi pour le TFileStream ils font pourtant comme ça


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1035587
Inekman
Posté le 05-04-2005 à 12:45:36  profilanswer
 

ayé j'ai trouvé l'erreur. le flag "FILE_FLAG_NO_BUFFERING" faisait foirer le truc pour je ne sais quelles raisons. J'ai remi à FILE_ATTRIBUTE_NORMAL et ça roule.
 
Merci antp de t'être penché sur le problème ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Buffer dynamique

 

Sujets relatifs
Probleme Buffer ??Un cadre dynamique autour d'une photo
creation site de news "dynamique"Savoir si la JFrame est affichée | faire un buffer sur une jframe :)
Création dynamique d'un objet[XML/PHP/SQL] Formulaire dynamique + base de données: quel logiciel
[XML/XSL] tri dynamique [résolu]Menu dynamique (problème avec visibility)
Génération dynamique de documents paramétrés (templates)gestion dynamique de donnée sous flash
Plus de sujets relatifs à : Buffer dynamique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR