BlockWrite pbleme [Résolu]

cs_manu00 93 Messages postés jeudi 19 décembre 2002Date d'inscription 25 octobre 2006 Dernière intervention - 21 juil. 2005 à 17:47 - Dernière réponse : cs_manu00 93 Messages postés jeudi 19 décembre 2002Date d'inscription 25 octobre 2006 Dernière intervention
- 22 juil. 2005 à 10:00
hello,



J'ai un petit probleme de comprehension au niveau du blockwrite.

Je lis avec BlockRead un fichier binaire.



Ensuite, je me positionne avec Seek dans un second fichier binaire, et
j'ecris avec BlockWrite ce que j'ai obtenu du blockread sur le fichier
precedent.



Tout fonctionne bien, il me positionne bien les données sur le bon
offset... malheureusement, il me vide tout le contenu du fichier. il me
met des 000000000000000000000 partout au lieu de laisser le contenu
initial et de juste faire un insert ou un replace dans le fichier
binaire.



Est ce qu'il est possible d'inserer les données dans le fichier binaire et pas de tout reecrire du début avec des 000000000 ???



Merci



Manu
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 21 juil. 2005 à 19:55
3
Merci
salut

on peut surcharger un fichier binaire, mais on ne peut pas "inserer" des données.

pour inserer des données il faut

soit charger en memoire se qui se trouve apres le point d'insertion ;

ecrire les données au point d'insertion

puis ajouter à la suite les donnes chargées en mémoire

pour de gros fichiers on peut créer un fichier temporaire qui sert de mémoire tampon

Maintenant pour ton problème d'écriture proprement dit il faudrait avoir ton bout de code ainsi que les déclaration de variables

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de jlen100
cs_manu00 93 Messages postés jeudi 19 décembre 2002Date d'inscription 25 octobre 2006 Dernière intervention - 22 juil. 2005 à 09:13
0
Merci
Merci, je vais essayer de faire ca...

;-)



Bonne journée



M.
Commenter la réponse de cs_manu00
cs_manu00 93 Messages postés jeudi 19 décembre 2002Date d'inscription 25 octobre 2006 Dernière intervention - 22 juil. 2005 à 10:00
0
Merci
procedure TForm1.Button1Click(Sender: TObject);

var

F, F2: file;

lus,ecrit:integer;

Buf: array[1..1024] of Char;



begin

if OpenDialog1.Execute then

if SaveDialog1.Execute then

begin

AssignFile(F, OpenDialog1.FileName);

Reset(F, 1);

seek(F,$36); //se positionne au bloc 36 de l'image et le copie

AssignFile(F2, savedialog1.filename);

rewrite(F2,1);

seek(F2,$1BD08);



repeat

BlockRead(F, Buf, SizeOf(Buf), lus); //Lis le bloc 36 de l'image jusqu'a la fin

//blockread(variable de fichier, là où on met ce qu'on lit,

//on donne nombre de chose qu'on va lire, renvoie ce qui a été réellement lu)

BlockWrite(F2, Buf, SizeOf(Buf), ecrit);

until (lus = 0) or (ecrit <> lus );

CloseFile(F);

CloseFile(F2);

end;



Voila ma procedure... Ma nouvelle question est comment faire un
blockread uniquement sur une partie du contenu (de l'offset xxxx à
l'offset yyyy et pas jusqu'a la fin du fichier ??)



Merci

M.
Commenter la réponse de cs_manu00

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.