source: branches/ByteArray/Forms/FormMemory.pas

Last change on this file was 11, checked in by chronos, 2 months ago
  • Modified: Updated Common package.
  • Fixed: Wrong return address from CALL instruction.
File size: 1.6 KB
Line 
1unit FormMemory;
2
3interface
4
5uses
6 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls,
7 Menus, IntMemory, FormEx;
8
9type
10
11 { TFormMemory }
12
13 TFormMemory = class(TFormEx)
14 ListViewMemory: TListView;
15 MainMenu1: TMainMenu;
16 MenuItem1: TMenuItem;
17 MenuItemClear: TMenuItem;
18 Timer1: TTimer;
19 procedure FormShow(Sender: TObject);
20 procedure ListViewMemoryData(Sender: TObject; Item: TListItem);
21 procedure MenuItemClearClick(Sender: TObject);
22 procedure Timer1Timer(Sender: TObject);
23 public
24 Memory: TMemory;
25 procedure Reload;
26 end;
27
28const
29 ItemsPerLine = 16;
30
31
32implementation
33
34{$R *.lfm}
35
36procedure TFormMemory.Reload;
37begin
38 ListViewMemory.Items.Count := Memory.Size div ItemsPerLine;
39 ListViewMemory.Refresh;
40end;
41
42procedure TFormMemory.ListViewMemoryData(Sender: TObject; Item: TListItem);
43var
44 Line: string;
45 I: Integer;
46 Text: string;
47 One: Byte;
48begin
49 if Item.Index < Memory.Size div ItemsPerLine then begin
50 Line := '';
51 Text := '';
52 for I := 0 to ItemsPerLine - 1 do begin
53 One := Memory.Read(Item.Index * ItemsPerLine + I, 1);
54 Line := Line + IntToHex(One, 2) + ' ';
55 if One >= 32 then Text := Text + Char(One)
56 else Text := Text + ' ';
57 end;
58 Item.Caption := IntToHex(Item.Index * ItemsPerLine, 8);
59 Item.SubItems.Add(Line);
60 Item.SubItems.Add(Text);
61 end;
62end;
63
64procedure TFormMemory.MenuItemClearClick(Sender: TObject);
65begin
66 Memory.FillZero;
67 Reload;
68end;
69
70procedure TFormMemory.FormShow(Sender: TObject);
71begin
72 Reload;
73end;
74
75procedure TFormMemory.Timer1Timer(Sender: TObject);
76begin
77 if Visible then Reload;
78end;
79
80end.
81
Note: See TracBrowser for help on using the repository browser.