Ignore:
Timestamp:
Apr 21, 2026, 2:55:51 PM (6 days ago)
Author:
chronos
Message:
  • Added: Call stack window.
  • Modified: Use reload pending boolean variable and reload from timer instead of Thread.Synchronize to not delay CPU execution.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/FormMemory.pas

    r5 r13  
    55uses
    66  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls,
    7   StdCtrls, Memory, Generics.Collections;
     7  StdCtrls, MemoryTypes, Generics.Collections;
    88
    99type
     
    2424    procedure Timer1Timer(Sender: TObject);
    2525  private
    26     Memory: TMemory;
    27     Size: Integer;
     26    FReloadPending: Boolean;
     27    FMemory: TMemory;
     28    FSize: Integer;
    2829  public
    2930    Areas: TObjectList<TMemory>;
     
    4546procedure TFormMemory.Reload;
    4647begin
    47   ListViewMemory.Items.Count := Size div ItemsPerLine;
     48  ListViewMemory.Items.Count := FSize div ItemsPerLine;
    4849  ListViewMemory.Refresh;
    4950end;
     
    5657  One: Byte;
    5758begin
    58   if Item.Index < Size div ItemsPerLine then begin
     59  if Item.Index < FSize div ItemsPerLine then begin
    5960    Line := '';
    6061    Text := '';
    6162    for I := 0 to ItemsPerLine - 1 do begin
    62       One := Memory.Read(Item.Index * ItemsPerLine + I);
     63      One := FMemory.Read(Item.Index * ItemsPerLine + I);
    6364      Line := Line + IntToHex(One, 2) + ' ';
    6465      if One >= 32 then Text := Text + Char(One)
     
    7576  ReloadAreas;
    7677  ComboBoxAreaSelect(nil);
     78  FReloadPending := True;
    7779end;
    7880
     
    8587begin
    8688  if ComboBoxArea.ItemIndex >= 0 then begin
    87     Memory := TMemory(ComboBoxArea.Items.Objects[ComboBoxArea.ItemIndex]);
    88     Size := Memory.Size;
     89    FMemory := TMemory(ComboBoxArea.Items.Objects[ComboBoxArea.ItemIndex]);
     90    FSize := FMemory.Size;
    8991  end else begin
    90     Memory := nil;
    91     Size := 0;
     92    FMemory := nil;
     93    FSize := 0;
    9294  end;
    9395  Reload;
     
    101103procedure TFormMemory.Timer1Timer(Sender: TObject);
    102104begin
    103   if Visible then Reload;
     105  if FReloadPending then begin
     106    FReloadPending := False;
     107    Reload;
     108  end;
    104109end;
    105110
Note: See TracChangeset for help on using the changeset viewer.