Changeset 50 for branches/ByteArray/Devices/Memory.pas
- Timestamp:
- Nov 2, 2023, 11:18:06 PM (7 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ByteArray/Devices/Memory.pas
r47 r50 17 17 public 18 18 Position: Integer; 19 procedure Assign(Source: TMemory); 19 20 function Read(Address: TBigInt; ASize: TBigIntSize): TBigInt; 20 21 function ReadPos(ASize: Byte): TBigInt; … … 22 23 procedure WritePos(ASize: Byte; Value: TBigInt); 23 24 procedure WriteStringPos(Value: string); 25 procedure WriteMemoryPos(Memory: TMemory); 24 26 function GetAddressCount: Integer; override; 25 27 procedure SetChannel(Channel: TChannel); override; 26 28 procedure Clean; 27 29 property Size: Integer read GetSize write SetSize; 30 destructor Destroy; override; 28 31 end; 29 32 … … 44 47 begin 45 48 FData := ReAllocMem(FData, AValue); 49 end; 50 51 procedure TMemory.Assign(Source: TMemory); 52 begin 53 Size := Source.Size; 54 if Size > 0 then 55 Move(Source.FData[0], FData[0], Size); 56 Position := Source.Position; 46 57 end; 47 58 … … 90 101 end; 91 102 103 procedure TMemory.WriteMemoryPos(Memory: TMemory); 104 begin 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; 110 end; 111 92 112 function TMemory.GetAddressCount: Integer; 93 113 begin … … 106 126 end; 107 127 128 destructor TMemory.Destroy; 129 begin 130 Size := 0; 131 inherited; 132 end; 133 108 134 end. 109 135
Note:
See TracChangeset
for help on using the changeset viewer.