国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何對數據流 INSERT、APPEND

2019-11-17 05:45:09
字體:
來源:轉載
供稿:網友

  假如不是第一次初始化的話。因此,有必要對多段數據流的整合操作做一些有利的約束。如增加INSERT(插入)、 APPEND(追加)之類的方法。從TStream的定義及其派生子類我們得知,CopyFrom是唯一可以加以利用的公用函數,它從指定的流上拷貝指定數量的字節后返回一長整型值,該值代表最后成功傳送的實際字節數。其后,我們用Seek函數來避免數據流之間的相互覆蓋,并以此來界定后來者加入的位置。在SEEK函數的定義中,第一個參數為偏移量,第二個參數是個定位標識,其定義如下:
soFromBeginning表示在流的頂頭開始位移,第一個參數必須 $#@62;=0.
soFromCurrent表示從當前位置開始位移。
soFromEnd表示從流的最后開始位移,第一個參數必須$#@60;= 0.
  SEEK操作成功后,由Position屬性存放流當前的位置值。Size屬性是該流到目前為止的長度。
具體操作見以下范例:
unit DemoUnit;
...

type
TForm1 = class(TForm)
...
Memo1: TMemo;
PRocedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
// 建立一個演示內存流
STO : TMemoryStream;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
...
Try
//創建內存流的對象
STO := TMemoryStream.Create;
Finally
...
end;
...
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
...
//初始化內存流對象,并移動指針到頭部
STO.LoadFromFile( OpenDialog1.FileName );
STO.Seek( 0, soFromBeginning );
//把調入的東西顯示出來
Memo1.Lines.LoadFromStream( STO );
...
end;
//以下的工作必須在內存流初始化后方能進行
//插入演示
procedure TForm1.Button2Click(Sender: TObject);
Var
SWA : TMemoryStream; //定義一個臨時內存流
begin
...
//創建臨時工作的對象
SWA := TMemoryStream.Create;
//加載要插入的目標
SWA.LoadFromFile( OpenDialog1.FileName );
//移動演示流的指針到頭部,預備交換
STO.Seek( 0, soFromBeginning );
//移動臨時流的指針到尾部,接收演示流
SWA.Seek( 0, soFromEnd );
SWA.CopyFrom( STO, STO.Size );
//把演示流換成新的內容
STO.LoadFromStream( SWA );
STO.Seek( 0, soFromBeginning );
//把插入后的內容顯示出來
Memo1.Lines.LoadFromStream( STO );
...
end;
//追加演示
procedure TForm1.Button3Click(Sender: TObject);
Var
SWA : TMemoryStream;//定義一個臨時內存流
begin
...
//創建臨時工作的對象并加載要追加的目標
SWA := TMemoryStream.Create;
SWA.LoadFromFile( OpenDialog1.FileName );
//移動演示流的指針到尾部,接收臨時流
STO.Seek( 0, soFromEnd );
SWA.Seek( 0, soFromBeginning );
//拷貝,移動指針后顯示
STO.CopyFrom( SWA, SWA.Size );
STO.Seek( 0, soFromBeginning );
Memo1.Lines.LoadFromStream( STO );
...
end;

....
   在Insert過程當中,僅僅只是把新來的流加到最前面,而沒有考慮在任何位置的插入問題,假如要對任何條件都滿足的話,就要考慮一個復雜的前提:流的分解。由于篇幅有限,本文不再敘述,有愛好的朋友可試一試。
right">(出處:清風軟件下載學院)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舞阳县| 大厂| 盐源县| 仁寿县| 巴中市| 香格里拉县| 榆林市| 当雄县| 宽甸| 凤台县| 台湾省| 女性| 肇东市| 凭祥市| 嘉鱼县| 临湘市| 石渠县| 资源县| 济阳县| 故城县| 前郭尔| 平湖市| 华池县| 沂水县| 新巴尔虎左旗| 汉中市| 中牟县| 阳西县| 通辽市| 大英县| 静海县| 姜堰市| 洛阳市| 托克托县| 内丘县| 皋兰县| 泰宁县| 广水市| 开江县| 布拖县| 彭州市|