Last change
on this file was 456, checked in by chronos, 2 years ago |
- Modified: Removed U prefix from unit names.
|
File size:
1004 bytes
|
Line | |
---|
1 | unit NetworkCommon;
|
---|
2 |
|
---|
3 | interface
|
---|
4 |
|
---|
5 | uses
|
---|
6 | Classes, SysUtils;
|
---|
7 |
|
---|
8 | procedure StreamAppend(Stream: TStream; SourceStream: TStream);
|
---|
9 | procedure StreamRemoveRead(Stream: TMemoryStream);
|
---|
10 |
|
---|
11 |
|
---|
12 | implementation
|
---|
13 |
|
---|
14 | procedure StreamAppend(Stream: TStream; SourceStream: TStream);
|
---|
15 | var
|
---|
16 | Buffer: array of Byte;
|
---|
17 | ReadCount: Integer;
|
---|
18 | Base: Integer;
|
---|
19 | const
|
---|
20 | ChunkSize = 4096;
|
---|
21 | begin
|
---|
22 | SetLength(Buffer, 0);
|
---|
23 | Base := 0;
|
---|
24 | repeat
|
---|
25 | SetLength(Buffer, Length(Buffer) + ChunkSize);
|
---|
26 | ReadCount := SourceStream.Read(Buffer[Base], ChunkSize);
|
---|
27 | Inc(Base, ReadCount);
|
---|
28 | SetLength(Buffer, Base);
|
---|
29 | until ReadCount < ChunkSize;
|
---|
30 |
|
---|
31 | if Length(Buffer) > 0 then begin
|
---|
32 | Stream.Position := Stream.Size;
|
---|
33 | Stream.Write(Buffer[0], Length(Buffer));
|
---|
34 | end;
|
---|
35 | end;
|
---|
36 |
|
---|
37 | procedure StreamRemoveRead(Stream: TMemoryStream);
|
---|
38 | begin
|
---|
39 | // Remove already read data from start of memory stream
|
---|
40 | Move(PByte(Stream.Memory + Stream.Position)^, Stream.Memory^, Stream.Size - Stream.Position);
|
---|
41 | Stream.SetSize(Stream.Size - Stream.Position);
|
---|
42 | end;
|
---|
43 |
|
---|
44 | end.
|
---|
45 |
|
---|
46 |
|
---|
Note:
See
TracBrowser
for help on using the repository browser.