source: trunk/Forms/FormMemory.pas

Last change on this file was 152, checked in by chronos, 13 months ago
  • Fixed: A typo in interpreter target name.
File size: 1.7 KB
Line 
1unit FormMemory;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
7 ComCtrls, Math, FormEx;
8
9const
10 RowSize = 16;
11
12type
13
14 { TFormMemory }
15
16 TFormMemory = class(TFormEx)
17 Label6: TLabel;
18 ListViewMemory: TListView;
19 procedure ListViewMemoryData(Sender: TObject; Item: TListItem);
20 public
21 procedure Reload;
22 end;
23
24
25implementation
26
27{$R *.lfm}
28
29uses
30 Core, TargetInterpreter;
31
32{ TFormMemory }
33
34procedure TFormMemory.Reload;
35begin
36 if Core.Core.CurrentTarget is TTargetInterpreter then
37 with TTargetInterpreter(Core.Core.CurrentTarget) do begin
38 if MemoryChanged then begin
39 MemoryChanged := False;
40 ListViewMemory.Items.Count := Ceil((MemoryMaxUsedAddr + 1) / RowSize);
41 ListViewMemory.Refresh;
42 end;
43 end;
44end;
45
46procedure TFormMemory.ListViewMemoryData(Sender: TObject; Item: TListItem);
47var
48 Row: string;
49 I: Integer;
50 Text: string;
51 Address: Integer;
52begin
53 if Core.Core.CurrentTarget is TTargetInterpreter then
54 with TTargetInterpreter(Core.Core.CurrentTarget) do
55 if (Item.Index >= 0) and (Item.Index <= Trunc((MemoryMaxUsedAddr + 1) / RowSize)) then begin
56 Item.Caption := IntToHex(Item.Index * RowSize, 8);
57 Row := '';
58 Text := Default(string);
59 SetLength(Text, RowSize);
60 for I := 0 to RowSize - 1 do begin
61 Address := Item.Index * RowSize + I;
62 if Address < (MemoryMaxUsedAddr + 1) then begin
63 Row := Row + ' ' + IntToHex(Memory[Address], 2);
64 if Memory[Address] > Ord(' ') then Text[I + 1] := Chr(Memory[Address])
65 else Text[I + 1] := ' ';
66 end else Text[I + 1] := ' ';
67 end;
68 Item.SubItems.Add(Row);
69 Item.SubItems.Add(Text);
70 end;
71end;
72
73end.
74
Note: See TracBrowser for help on using the repository browser.