Ignore:
Timestamp:
Nov 2, 2023, 11:18:06 PM (7 months ago)
Author:
chronos
Message:
  • Added: Storage form.
  • Added: Dissasembler form.
  • Added: Debug and release build modes.
  • Added: Support for interface translation.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ByteArray/Devices/Memory.pas

    r47 r50  
    1717  public
    1818    Position: Integer;
     19    procedure Assign(Source: TMemory);
    1920    function Read(Address: TBigInt; ASize: TBigIntSize): TBigInt;
    2021    function ReadPos(ASize: Byte): TBigInt;
     
    2223    procedure WritePos(ASize: Byte; Value: TBigInt);
    2324    procedure WriteStringPos(Value: string);
     25    procedure WriteMemoryPos(Memory: TMemory);
    2426    function GetAddressCount: Integer; override;
    2527    procedure SetChannel(Channel: TChannel); override;
    2628    procedure Clean;
    2729    property Size: Integer read GetSize write SetSize;
     30    destructor Destroy; override;
    2831  end;
    2932
     
    4447begin
    4548  FData := ReAllocMem(FData, AValue);
     49end;
     50
     51procedure TMemory.Assign(Source: TMemory);
     52begin
     53  Size := Source.Size;
     54  if Size > 0 then
     55    Move(Source.FData[0], FData[0], Size);
     56  Position := Source.Position;
    4657end;
    4758
     
    90101end;
    91102
     103procedure TMemory.WriteMemoryPos(Memory: TMemory);
     104begin
     105  if Memory.Size > 0 then begin
     106    if Position + Memory.Size > Size then Size := Position + Memory.Size;
     107    Move(Memory.FData[0], FData[Position], Memory.Size);
     108    Inc(Position, Memory.Size);
     109  end;
     110end;
     111
    92112function TMemory.GetAddressCount: Integer;
    93113begin
     
    106126end;
    107127
     128destructor TMemory.Destroy;
     129begin
     130  Size := 0;
     131  inherited;
     132end;
     133
    108134end.
    109135
Note: See TracChangeset for help on using the changeset viewer.