|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() ![]() Titouan Créac'hLycéen Inscription : mai 2009 Messages : 193 ![]() |
Bonsoir,
Je cherche à faire un découpeur de fichier. C'est à dire couper un fichier > à 1.44Mo en plusieurs fichiers < 1.4Mo. Voici un bout de code expliquer Code :
J'ai fais des testes. Quand je met 1 -> Le fichier destination = 128octets Quand je met 2 -> Le fichier = 256Octets; Quand je met Ko -> J'ai un Ko Mais quand j'ai plus que 2,5 Ko, alors, mon éditeur se ferme sans sauvegarder. J'ai parfois un message Illegal Opération. Si vous aviez une solution ! Merci |
||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Patrick Technicien maintenance Inscription : février 2003 Messages : 425 ![]() |
Tu veux effectuer une copie d'un méga octet alors que tu déclares un buffer d'une taille d'un mot, soit 2 octets...
Inspire-toi du code de la FAQ qui montre comment utiliser BlockRead et BlockWrite.
__________________
À + Pat. Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme: ![]() ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Delphi 2005 Édition Personnelle Lazarus 0.9.31 r33481 FPC 2.5.1 x86_64-win64-win32/win64 |
|
|
10
|
|
|
#3 |
|
Membre confirmé
![]() ![]() Titouan Créac'hLycéen Inscription : mai 2009 Messages : 193 ![]() |
Merci, tu as résolus une partie de l'erreur.
Maintenant, mon programme devient fou Si quelqu'un voit une autre erreur |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : août 2006 Messages : 3 195 ![]() |
Quo,
Qu'appelles-tu "une variable plus grande" ? C'est un tableau qu'il te faut, en t'assurant qu'il soit de taille suffisante (voir l'aide pour les fonctions que tu utilises).
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() ![]() Titouan Créac'hLycéen Inscription : mai 2009 Messages : 193 ![]() |
J'avais mis un longint. Mais comment je peut faire avec un tableau ?
|
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : avril 2002 Messages : 2 134 ![]() |
Tu lis 1 Mo de données d'un fichier, il faut donc que tu alloues en mémoire en espace de 1 Mo pour contenir ces données. Pour cela, il faudra que tu passes par une allocation dynamique.
Si tu ne veux pas d'allocation dynamique, tu peux te limiter à transférer 64k par 64k.
__________________
wormful_sickfoot - Rédacteur et Modérateur Pascal |
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() Eric GaridacciInscription : septembre 2005 Messages : 1 057 ![]() |
Salut,
Reset(FSource,1); {Chaque block := 128 octet}Non, dans ce cas la taille des enregistrements n'est pas de 128 octets (valeur par défaut si paramètre omis) mais bel et bien d'un octet. Par contre, Rewrite(FDestination);Ici, la taille des enregistrements est bien de 128 octets car le paramètre Taille_enr est omis. Rappel : procedure BlockWrite(var F:file; var Buf; Nombre:Word[;Resultat:Word]); Le bloc transféré aura au plus une taille de Nombre*Taille_enr octets, où Taille_enr représente la taille d'enregistrements précisée à l'ouverture du fichier.Ci-dessous un code TP7 permettant le découpage de fichier en plusieurs fichiers de OutFileSize octets.procedure Rewrite(var F[:file; TailleEnr:Word] );ou 128 octets si aucune taille n'avait été précisée. La lecture et l'écriture se fait par paquet de 65520 octets. Code :
__________________
N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ... |
||
|
|
20
|
|
|
#8 |
|
Membre confirmé
![]() ![]() Titouan Créac'hLycéen Inscription : mai 2009 Messages : 193 ![]() |
Merci beaucoup !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com