source: tags/1.0.0/Forms/UFormMemory.pas

Last change on this file was 78, checked in by chronos, 7 years ago
  • Modified: Show only really used memory.
  • Added: Check memory leaks in Debug build mode.
File size: 1.3 KB
Line 
1unit UFormMemory;
2
3{$mode delphi}
4
5interface
6
7uses
8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
9 ComCtrls, Math;
10
11const
12 RowSize = 16;
13
14type
15
16 { TFormMemory }
17
18 TFormMemory = class(TForm)
19 Label6: TLabel;
20 ListViewMemory: TListView;
21 procedure ListViewMemoryData(Sender: TObject; Item: TListItem);
22 private
23 { private declarations }
24 public
25 procedure Reload;
26 end;
27
28var
29 FormMemory: TFormMemory;
30
31implementation
32
33{$R *.lfm}
34
35uses
36 UCore, UTargetInterpretter;
37
38{ TFormMemory }
39
40procedure TFormMemory.Reload;
41begin
42 if Core.CurrentTarget is TTargetInterpretter then
43 with TTargetInterpretter(Core.CurrentTarget) do begin
44 ListViewMemory.Items.Count := Ceil(MemoryMaxUsed / RowSize);
45 ListViewMemory.Refresh;
46 end;
47end;
48
49procedure TFormMemory.ListViewMemoryData(Sender: TObject; Item: TListItem);
50var
51 Row: string;
52 I: Integer;
53begin
54 if Core.CurrentTarget is TTargetInterpretter then
55 with TTargetInterpretter(Core.CurrentTarget) do
56 if (Item.Index >= 0) and (Item.Index <= Trunc(MemoryMaxUsed / RowSize)) then begin
57 Item.Caption := IntToHex(Item.Index * RowSize, 8);
58 Row := '';
59 for I := 0 to RowSize - 1 do
60 if (Item.Index * RowSize + I) < MemoryMaxUsed then
61 Row := Row + ' ' + IntToHex(Memory[Item.Index * RowSize + I], 2);
62 Item.SubItems.Add(Row);
63 end;
64end;
65
66end.
67
Note: See TracBrowser for help on using the repository browser.