بالنسبة لاظهار حجم الملف يمكنك استعمال كود الذي و جدته في النت
كود :
function FormatByteSize(const bytes: int64): string;
const
B = 1; //byte
KB = 1024 * B; //kilobyte
MB = 1024 * KB; //megabyte
GB = 1024 * MB; //gigabyte
begin
if bytes > GB then
result := FormatFloat('#.## GB', bytes / GB)
else if bytes > MB then
result := FormatFloat('#.## MB', bytes / MB)
else if bytes > KB then
result := FormatFloat('#.## KB', bytes / KB)
else
result := FormatFloat('#.## bytes', bytes);
end;
اضف في اخر سطر في الدالة Button1Click فتح الملف
كود :
Label3.Caption := FormatByteSize(MStream.Size);
بالنسبة ل ProgressBar اضافته لا تغير شيء لان فتح الملف سريع جدا يمكنه فتح ملف 10 ميغا في ثانية وهذه ليست مدة انتظار طويلة
اظهار قيم bin في Édit3 غير عملي و هناك احتمالية ان تظهر بقيم خاطئة و هذا هو الهدف من استعمال نص hex هناك حالات الحرف يحتوي على Byte واحد و اخرى على اثنين..و هناك قيملابجب استعمالهامثل 0
على كل حال راجع الامثلة السابقة المتعلقة ب Mémo
يمكنك استعمال الكود التالي و لكن عليك تحديد الطول الذي تريد اختياره في المثال Len تقوم باظهار 10 حروف
كود :
procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
var
Pz,R,Len :integer;
S:Ansistring;
begin
Pz := (ARow-1) * 16 + (ACol-1);//cellule
if (Pz >= 0) and(Pz < MStream.Size) then
begin
OffsetEdit.Text := IntToHex(Pz,6);
Len :=10;
MStream.Position := Pz;
SetLength(S,Len);
R:= MStream.Read(Pointer(S)^,Len);
if R<>Len then
SetLength(S,R);
Edit3.Text := S;
end;
end;