Buffer dynamique - Delphi/Pascal - Programmation
Marsh Posté le 03-04-2005 à 21:38:05
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 Ou encore plus simple t'appelles CopyFile ou SHFileOperation
Marsh Posté le 03-04-2005 à 22:24:17
Je suis dans ma période Api Win32, donc je me limite à CreateFile, ReadFile, WriteFile, SetFilePointer et CloseHandle.
|
Marsh Posté le 05-04-2005 à 09:42:06
Bizarre... Dans Delphi pour le TFileStream ils font pourtant comme ça
Marsh Posté le 05-04-2005 à 12:45:36
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
Marsh Posté le 03-04-2005 à 19:38:13
Yop les zoulou ,
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 .
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...
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
Un grand help à vous tous (antp)