d0248a151de9734a73c6eddfe1e08b7dd5e5cc63
13 Data
: array [0..BUF_SIZE
] of Byte; // îäèí áàéò ñâåðõó íà âñÿêèé ñëó÷àé
23 procedure e_Buffer_Clear(B
: pTBuffer
);
26 procedure e_Buffer_Write_Generic(B
: pTBuffer
; var V
; N
: Cardinal);
27 procedure e_Buffer_Read_Generic(B
: pTBuffer
; var V
; N
: Cardinal);
30 procedure e_Buffer_Write(B
: pTBuffer
; V
: Char); overload
;
32 procedure e_Buffer_Write(B
: pTBuffer
; V
: Byte); overload
;
33 procedure e_Buffer_Write(B
: pTBuffer
; V
: Word); overload
;
34 procedure e_Buffer_Write(B
: pTBuffer
; V
: LongWord); overload
;
36 procedure e_Buffer_Write(B
: pTBuffer
; V
: ShortInt); overload
;
37 procedure e_Buffer_Write(B
: pTBuffer
; V
: SmallInt); overload
;
38 procedure e_Buffer_Write(B
: pTBuffer
; V
: LongInt); overload
;
39 procedure e_Buffer_Write(B
: pTBuffer
; V
: Int64); overload
;
41 procedure e_Buffer_Write(B
: pTBuffer
; V
: string); overload
;
43 procedure e_Buffer_Write(B
: pTBuffer
; V
: TMD5Digest
); overload
;
46 function e_Buffer_Read_Char(B
: pTBuffer
): Char;
48 function e_Buffer_Read_Byte(B
: pTBuffer
): Byte;
49 function e_Buffer_Read_Word(B
: pTBuffer
): Word;
50 function e_Buffer_Read_LongWord(B
: pTBuffer
): LongWord;
52 function e_Buffer_Read_ShortInt(B
: pTBuffer
): ShortInt;
53 function e_Buffer_Read_SmallInt(B
: pTBuffer
): SmallInt;
54 function e_Buffer_Read_LongInt(B
: pTBuffer
): LongInt;
55 function e_Buffer_Read_Int64(B
: pTBuffer
): Int64;
57 function e_Buffer_Read_String(B
: pTBuffer
): string;
59 function e_Buffer_Read_MD5(B
: pTBuffer
): TMD5Digest
;
62 procedure e_Raw_Read_Generic(P
: Pointer; var V
; N
: Cardinal);
64 function e_Raw_Read_Char(P
: Pointer): Char;
66 function e_Raw_Read_Byte(P
: Pointer): Byte;
67 function e_Raw_Read_Word(P
: Pointer): Word;
68 function e_Raw_Read_LongWord(P
: Pointer): LongWord;
70 function e_Raw_Read_ShortInt(P
: Pointer): ShortInt;
71 function e_Raw_Read_SmallInt(P
: Pointer): SmallInt;
72 function e_Raw_Read_LongInt(P
: Pointer): LongInt;
74 function e_Raw_Read_String(P
: Pointer): string;
76 function e_Raw_Read_MD5(P
: Pointer): TMD5Digest
;
78 procedure e_Raw_Seek(I
: Cardinal);
82 uses SysUtils
, BinEditor
;
84 procedure e_Buffer_Clear(B
: pTBuffer
);
92 procedure e_Buffer_Write_Generic(B
: pTBuffer
; var V
; N
: Cardinal);
94 if (B
^.WritePos
+ N
>= BUF_SIZE
) then Exit
;
95 if (B
^.WritePos
+ N
> B
^.Len
) then
96 B
^.Len
:= B
^.WritePos
+ N
+ 1;
98 CopyMemory(Pointer(Cardinal(Addr(B
^.Data
)) + B
^.WritePos
),
101 B
^.WritePos
:= B
^.WritePos
+ N
;
103 procedure e_Buffer_Read_Generic(B
: pTBuffer
; var V
; N
: Cardinal);
105 if (B
^.ReadPos
+ N
>= BUF_SIZE
) then Exit
;
107 CopyMemory(@V
, Pointer(Cardinal(Addr(B
^.Data
)) + B
^.ReadPos
), N
);
109 B
^.ReadPos
:= B
^.ReadPos
+ N
;
113 procedure e_Buffer_Write(B
: pTBuffer
; V
: Char); overload
;
115 e_Buffer_Write_Generic(B
, V
, 1);
118 procedure e_Buffer_Write(B
: pTBuffer
; V
: Byte); overload
;
120 e_Buffer_Write_Generic(B
, V
, 1);
122 procedure e_Buffer_Write(B
: pTBuffer
; V
: Word); overload
;
124 e_Buffer_Write_Generic(B
, V
, 2);
126 procedure e_Buffer_Write(B
: pTBuffer
; V
: LongWord); overload
;
128 e_Buffer_Write_Generic(B
, V
, 4);
131 procedure e_Buffer_Write(B
: pTBuffer
; V
: ShortInt); overload
;
133 e_Buffer_Write_Generic(B
, V
, 1);
135 procedure e_Buffer_Write(B
: pTBuffer
; V
: SmallInt); overload
;
137 e_Buffer_Write_Generic(B
, V
, 2);
139 procedure e_Buffer_Write(B
: pTBuffer
; V
: LongInt); overload
;
141 e_Buffer_Write_Generic(B
, V
, 4);
143 procedure e_Buffer_Write(B
: pTBuffer
; V
: Int64); overload
;
145 e_Buffer_Write_Generic(B
, V
, 8);
148 procedure e_Buffer_Write(B
: pTBuffer
; V
: string); overload
;
154 e_Buffer_Write_Generic(B
, Len
, 1);
156 if (Len
= 0) then Exit
;
158 P
:= B
^.WritePos
+ Len
;
159 if (P
>= BUF_SIZE
) then
161 Len
:= BUF_SIZE
- B
^.WritePos
;
165 if (P
> B
^.Len
) then B
^.Len
:= P
;
167 CopyMemory(Pointer(Cardinal(Addr(B
^.Data
)) + B
^.WritePos
),
173 procedure e_Buffer_Write(B
: pTBuffer
; V
: TMD5Digest
); overload
;
178 e_Buffer_Write(B
, V
[I
]);
182 function e_Buffer_Read_Char(B
: pTBuffer
): Char;
184 e_Buffer_Read_Generic(B
, Result
, 1);
187 function e_Buffer_Read_Byte(B
: pTBuffer
): Byte;
189 e_Buffer_Read_Generic(B
, Result
, 1);
191 function e_Buffer_Read_Word(B
: pTBuffer
): Word;
193 e_Buffer_Read_Generic(B
, Result
, 2);
195 function e_Buffer_Read_LongWord(B
: pTBuffer
): LongWord;
197 e_Buffer_Read_Generic(B
, Result
, 4);
200 function e_Buffer_Read_ShortInt(B
: pTBuffer
): ShortInt;
202 e_Buffer_Read_Generic(B
, Result
, 1);
204 function e_Buffer_Read_SmallInt(B
: pTBuffer
): SmallInt;
206 e_Buffer_Read_Generic(B
, Result
, 2);
208 function e_Buffer_Read_LongInt(B
: pTBuffer
): LongInt;
210 e_Buffer_Read_Generic(B
, Result
, 4);
212 function e_Buffer_Read_Int64(B
: pTBuffer
): Int64;
214 e_Buffer_Read_Generic(B
, Result
, 8);
217 function e_Buffer_Read_String(B
: pTBuffer
): string;
221 Len
:= e_Buffer_Read_Byte(B
);
223 if Len
= 0 then Exit
;
225 if B
^.ReadPos
+ Len
> B
^.Len
then
226 Len
:= B
^.Len
- B
^.ReadPos
;
228 SetLength(Result
, Len
);
229 CopyMemory(@Result
[1], Pointer(Cardinal(Addr(B
^.Data
)) + B
^.ReadPos
), Len
);
231 B
^.ReadPos
:= B
^.ReadPos
+ Len
;
234 function e_Buffer_Read_MD5(B
: pTBuffer
): TMD5Digest
;
239 Result
[I
] := e_Buffer_Read_Byte(B
);
242 procedure e_Raw_Read_Generic(P
: Pointer; var V
; N
: Cardinal);
244 CopyMemory(@V
, Pointer(Cardinal(P
) + RawPos
), N
);
246 RawPos
:= RawPos
+ N
;
249 function e_Raw_Read_Char(P
: Pointer): Char;
251 e_Raw_Read_Generic(P
, Result
, 1);
254 function e_Raw_Read_Byte(P
: Pointer): Byte;
256 e_Raw_Read_Generic(P
, Result
, 1);
258 function e_Raw_Read_Word(P
: Pointer): Word;
260 e_Raw_Read_Generic(P
, Result
, 2);
262 function e_Raw_Read_LongWord(P
: Pointer): LongWord;
264 e_Raw_Read_Generic(P
, Result
, 4);
267 function e_Raw_Read_ShortInt(P
: Pointer): ShortInt;
269 e_Raw_Read_Generic(P
, Result
, 1);
271 function e_Raw_Read_SmallInt(P
: Pointer): SmallInt;
273 e_Raw_Read_Generic(P
, Result
, 2);
275 function e_Raw_Read_LongInt(P
: Pointer): LongInt;
277 e_Raw_Read_Generic(P
, Result
, 4);
280 function e_Raw_Read_String(P
: Pointer): string;
284 Len
:= e_Raw_Read_Byte(P
);
286 if Len
= 0 then Exit
;
288 SetLength(Result
, Len
);
289 CopyMemory(@Result
[1], Pointer(Cardinal(P
) + RawPos
), Len
);
291 RawPos
:= RawPos
+ Len
;
294 function e_Raw_Read_MD5(P
: Pointer): TMD5Digest
;
299 Result
[I
] := e_Raw_Read_Byte(P
);
302 procedure e_Raw_Seek(I
: Cardinal);