cs_manu00
Messages postés93Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention25 octobre 2006
-
21 juil. 2005 à 17:47
cs_manu00
Messages postés93Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention25 octobre 2006
-
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 ???
cs_manu00
Messages postés93Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention25 octobre 2006 22 juil. 2005 à 10:00
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 ??)