|
@@ -58,6 +58,32 @@ type
|
|
property Position: LongInt read GetPosition write SetPosition;
|
|
property Position: LongInt read GetPosition write SetPosition;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+
|
|
|
|
+ TStreamHelper = class helper for TStream
|
|
|
|
+ function ReadWordLE :word;
|
|
|
|
+ function ReadDWordLE:dword;
|
|
|
|
+ function ReadQWordLE:qword;
|
|
|
|
+ procedure WriteWordLE (w:word);
|
|
|
|
+ procedure WriteDWordLE(dw:dword);
|
|
|
|
+ procedure WriteQWordLE(dq:qword);
|
|
|
|
+ function ReadWordBE :word;
|
|
|
|
+ function ReadDWordBE:dword;
|
|
|
|
+ function ReadQWordBE:qword;
|
|
|
|
+ procedure WriteWordBE (w:word);
|
|
|
|
+ procedure WriteDWordBE(dw:dword);
|
|
|
|
+ procedure WriteQWordBE(dq:qword);
|
|
|
|
+ {$ifndef FPC}
|
|
|
|
+ function ReadByte : Byte;
|
|
|
|
+ function ReadWord : Word;
|
|
|
|
+ function ReadDWord : DWord;
|
|
|
|
+ function ReadQWord : QWord;
|
|
|
|
+ procedure WriteByte (b : Byte);
|
|
|
|
+ procedure WriteWord (b : word);
|
|
|
|
+ procedure WriteDWord (b : DWord);
|
|
|
|
+ procedure WriteQWord (b : QWord);
|
|
|
|
+ {$endif}
|
|
|
|
+ end;
|
|
|
|
+
|
|
Implementation
|
|
Implementation
|
|
|
|
|
|
{ TBidirBinaryObjectReader }
|
|
{ TBidirBinaryObjectReader }
|
|
@@ -166,4 +192,99 @@ begin
|
|
GetDriver.WriteValue(Value);
|
|
GetDriver.WriteValue(Value);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+function TStreamHelper.readwordLE:word;
|
|
|
|
+begin
|
|
|
|
+ result:=LEtoN(readword);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TStreamHelper.readdwordLE:dword;
|
|
|
|
+begin
|
|
|
|
+ result:=LEtoN(readdword);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TStreamHelper.readqwordLE:qword;
|
|
|
|
+begin
|
|
|
|
+ result:=LEtoN(readqword);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TStreamHelper.readwordBE:word;
|
|
|
|
+begin
|
|
|
|
+ result:=BEtoN(readword);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TStreamHelper.readdwordBE:dword;
|
|
|
|
+begin
|
|
|
|
+ result:=BEtoN(readdword);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TStreamHelper.readqwordBE:qword;
|
|
|
|
+begin
|
|
|
|
+ result:=BEtoN(readqword);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TStreamHelper.WriteWordBE(w:word);
|
|
|
|
+begin
|
|
|
|
+ WriteWord(NtoBE(w));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TStreamHelper.WriteDWordBE(dw:dword);
|
|
|
|
+begin
|
|
|
|
+ WriteDWord(NtoBE(dw));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TStreamHelper.WriteQWordBE(dq:qword);
|
|
|
|
+begin
|
|
|
|
+ WriteQWord(NtoBE(dq));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TStreamHelper.WriteWordLE(w:word);
|
|
|
|
+begin
|
|
|
|
+ WriteWord(NtoLE(w));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TStreamHelper.WriteDWordLE(dw:dword);
|
|
|
|
+begin
|
|
|
|
+ WriteDWord(NtoLE(dw));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TStreamHelper.WriteQWordLE(dq:qword);
|
|
|
|
+begin
|
|
|
|
+ WriteQWord(NtoLE(dq));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+{$ifndef FPC}
|
|
|
|
+// there can only be one helper per class, and I use these in Delphi for FPC compatibility.
|
|
|
|
+function TStreamHelper.ReadByte: Byte;
|
|
|
|
+begin
|
|
|
|
+ self.Read(result,sizeof(result));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TStreamHelper.ReadDWord: DWord;
|
|
|
|
+begin
|
|
|
|
+ self.Read(result,sizeof(result));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TStreamHelper.ReadWord: Word;
|
|
|
|
+begin
|
|
|
|
+ self.Read(result,sizeof(result));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TStreamHelper.WriteByte(b: Byte);
|
|
|
|
+begin
|
|
|
|
+ self.Write(b,sizeof(b));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TStreamHelper.WriteDWord(b: DWord);
|
|
|
|
+begin
|
|
|
|
+ self.Write(b,sizeof(b));
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TStreamHelper.WriteWord(b: Word);
|
|
|
|
+begin
|
|
|
|
+ self.Write(b,sizeof(b));
|
|
|
|
+end;
|
|
|
|
+{$endif}
|
|
|
|
+
|
|
end.
|
|
end.
|