procedure TForm1.Button2Click(Sender: TObject); var fs: TFileStream; Buffer: array[0..15] of char; i: integer; begin fs := TFileStream.Create('data.dat', fmOpenRead or fmShareDenyWrite); try //détermination du nombre de lignes nécessaires i := fs.Size mod SizeOf(Buffer); if i = 0 then StringGrid1.RowCount := fs.Size div SizeOf(Buffer) else StringGrid1.RowCount := fs.Size div SizeOf(Buffer) + 1; fs.Position := 0; i := 1; //découpage du flux en tranches de SizeOf(Buffer) caractères while fs.Read(Buffer, SizeOf(Buffer)) <> 0 do begin StringGrid1.Cells[1, i] := Buffer; inc(i); end; finally FreeAndNil(fs); end; end;
procedure TForm1.Charger(nom : String); var Fs : TFileStream; Buf : array[0..15] of char; L,C : Integer; begin fs := TFileStream.Create(nom, fmOpenRead or fmShareDenyWrite); try fs.Position := 0; L := fs.Size mod SizeOf(Buf); if L = 0 then StringGrid1.RowCount := fs.Size div SizeOf(Buf) else StringGrid1.RowCount := fs.Size div SizeOf(Buf) + 1; fs.Position := 0; L := 1; while fs.Read(Buf, SizeOf(Buf)) <> 0 do begin {Adresse de la ligne dans la 1ère colonne} AdrLigneStr := IntToHex(16*(l-1),8); Insert(':', AdrLigneStr, 5); StringGrid1.Cells[0,l] := AdrLigneStr; {écriture cellule} For C := 1 to 15 do StringGrid1.Cells[C, L] := Buf[C]; inc(L); if L > 1000 then {valeur de ligne pour stopper le programme en mode débug} begin Mem.dwLength:=SizeOf(TMemoryStatus); GlobalMemoryStatus(Mem); showmessage('Mem Phy Tot = '+FloatToStrF(Mem.dwTotalPhys/1024,ffFixed,5,1)+' Ko'+#13#10 +'Mem Phy Lib = '+FloatToStrF(Mem.dwAvailPhys/1024,ffFixed,5,1)+' Ko'+#13#10 +'Mem Pag Tot = '+FloatToStrF(Mem.dwTotalPageFile/1024/1024,ffFixed,5,1)+' Mo'+#13#10 +'Mem Pag Lib = '+FloatToStrF(Mem.dwAvailPageFile/1024/1024,ffFixed,5,1)+' Mo'+#13#10 +'Mem Vir Tot = '+FloatToStrF(Mem.dwTotalVirtual/1024/1024,ffFixed,5,1)+' Mo'+#13#10 +'Mem Vir Lib = '+FloatToStrF(Mem.dwAvailVirtual/1024/1024,ffFixed,5,1)+' Mo'); end; end;{while} finally FreeAndNil(fs); end; end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question