程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第二十章-開發Delphi對象式數據管理功能(三)(5)

第二十章-開發Delphi對象式數據管理功能(三)(5)

編輯:Delphi

2. TWriter方法的實現

⑴ WriteListBegin和WriteListEnd的實現

這兩個方法都是用於寫連續若干個相同類型的值。WriteListBegin寫入VaList標志,WriteListEnd寫入VaNull標志。

procedure TWriter.WriteListBegin;

begin

WriteValue(vaList);

end;

procedure TWriter.WriteListEnd;

begin

WriteValue(vaNull);

end;

這兩個方法都調用TWriter對象的WriteValue方法,該方法主要用於寫入TValueType類型的值。

procedure TWriter.WriteValue(Value: TValueType);

begin

Write(Value, SizeOf(Value));

end;

⑵ 簡單數據類型的寫入

簡單數據類型指的是整型、字符型、字符串型、浮點型、布爾型等。TWriter對象都定義了相應的寫入方法。

WriteInteger方法用於寫入整型數據。

procedure TWriter.WriteInteger(Value: Longint);

begin

if (Value >= -128) and (Value <= 127) then

begin

WriteValue(vaInt8);

Write(Value, SizeOf(Shortint));

end else

if (Value >= -32768) and (Value <= 32767) then

begin

WriteValue(vaInt16);

Write(Value, SizeOf(Smallint));

end else

begin

WriteValue(vaInt32);

Write(Value, SizeOf(Longint));

end;

end;

WriteInteger方法將整型數據分為8位、16位和32位三種,並分別用vaInt8、vaInt16和VaInt32。

WriteBoolean用於寫入布爾型數據:

procedure TWriter.WriteBoolean(Value: Boolean);

begin

if Value then

WriteValue(vaTrue) else

WriteValue(vaFalse);

end;

與其它數據類型不同的是布爾型數據只使用了標志位是存儲布爾值,在標志位後沒有數據。

WriteFloat方法用於寫入浮點型數據。

procedure TWriter.WriteFloat(Value: Extended);

begin

WriteValue(vaExtended);

Write(Value, SizeOf(Extended));

end;

字符串“True”、“False”和“nil”作為標識符傳入是由於Delphi的特殊需要。如果是“True”、“False”和“nil”則寫入VaTrue、VaFalse和VaNil,否則寫入VaIdent標志,接著以字符串形式寫入標識符。

WriteString方法用於寫入字符串

procedure TWriter.WriteString(const Value: string);

var

L: Integer;

begin

L := Length(Value);

if L <= 255 then

begin

WriteValue(vaString);

Write(L, SizeOf(Byte));

end else

begin

WriteValue(vaLString);

Write(L, SizeOf(Integer));

end;

Write(Pointer(Value)^, L);

end;

Delphi的字符串類型有兩種。一種長度小於256個字節,另一種長度小於65536 個字節。WriteString方法區分這兩類情況存儲字符串,一種設置VaStirng標志,另一種設置VaLString。然後存儲字符串的長度值,最後存儲字符串數據。

WriteChar方法用於寫入字符。

procedure TWriter.WriteChar(Value: Char);

begin

WriteString(Value);

end;

字符類型的讀寫是用讀寫字符串的方法,在讀的時候,判斷字節數為1時,則為字符型。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved