source: trunk/UMemoryStreamEx.pas

Last change on this file was 2, checked in by george, 14 years ago
  • Přidáno: Soubory programu.
File size: 2.4 KB
Line 
1unit UMemoryStreamEx;
2
3interface
4
5uses
6 Classes, DateUtils;
7
8type
9 TMemoryStreamEx = class(TMemoryStream)
10 procedure WriteByte(Data: Byte);
11 procedure WriteWord(Data: Word);
12 procedure WriteCardinal(Data: Cardinal);
13 procedure WriteInt64(Data: Int64);
14 procedure WriteShortString(Data: ShortString);
15 procedure WriteUnixTime(Data: TDateTime);
16 procedure WriteStream(Stream: TStream);
17 function ReadByte: Byte;
18 function ReadWord: Word;
19 function ReadCardinal: Cardinal;
20 function ReadInt64: Int64;
21 function ReadShortString: string;
22 function ReadUnixTime: TDateTime;
23 procedure ReadStream(var Stream: TStream; Count: Integer);
24 end;
25
26implementation
27
28{ TMemoryStreamEx }
29
30function TMemoryStreamEx.ReadByte: Byte;
31begin
32 Read(Result, 1);
33end;
34
35function TMemoryStreamEx.ReadCardinal: Cardinal;
36begin
37 Read(Result, 4);
38end;
39
40function TMemoryStreamEx.ReadInt64: Int64;
41begin
42 Read(Result, 8);
43end;
44
45function TMemoryStreamEx.ReadShortString: string;
46var
47 Count: Byte;
48begin
49 Count := 0;
50 Read(Count, 1);
51 SetLength(Result, Count);
52 Read(Result[1], Count);
53end;
54
55procedure TMemoryStreamEx.ReadStream(var Stream: TStream; Count: Integer);
56var
57 Buffer: array of Byte;
58begin
59 if Count > 0 then begin
60 SetLength(Buffer, Count);
61 Read(Buffer[0], Count);
62 Stream.Size := Count;
63 Stream.Position := 0;
64 Stream.Write(Buffer[0], Count);
65 end;
66end;
67
68function TMemoryStreamEx.ReadUnixTime: TDateTime;
69begin
70 Result := UnixToDateTime(ReadCardinal);
71end;
72
73function TMemoryStreamEx.ReadWord: Word;
74begin
75 Read(Result, 2);
76end;
77
78procedure TMemoryStreamEx.WriteByte(Data: Byte);
79begin
80 Write(Data, 1);
81end;
82
83procedure TMemoryStreamEx.WriteCardinal(Data: Cardinal);
84begin
85 Write(Data, 4);
86end;
87
88procedure TMemoryStreamEx.WriteInt64(Data: Int64);
89begin
90 Write(Data, 8);
91end;
92
93procedure TMemoryStreamEx.WriteShortString(Data: ShortString);
94begin
95 WriteByte(Length(Data));
96 Write(Data[1], Length(Data))
97end;
98
99procedure TMemoryStreamEx.WriteStream(Stream: TStream);
100var
101 Buffer: array of Byte;
102begin
103 Stream.Position := 0;
104 SetLength(Buffer, Stream.Size);
105 Stream.Read(Buffer[0], Stream.Size);
106 Write(Buffer[0], Stream.Size);
107end;
108
109procedure TMemoryStreamEx.WriteUnixTime(Data: TDateTime);
110var
111 DataUnix: Int64;
112begin
113 DataUnix := DateTimeToUnix(Data);
114 Write(DataUnix, 4);
115end;
116
117procedure TMemoryStreamEx.WriteWord(Data: Word);
118begin
119 Write(Data, 2);
120end;
121
122end.
Note: See TracBrowser for help on using the repository browser.