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

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

C BUILDER中相關流對象的討論

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

  第一章 概述

在CBUILDER中,存在以下幾種流對象:
TFileStream
TMemoryStream
TStringStream
TWinSocketStream
TBlobStream
TOleStream
TClientBlobStream
TResourceStream


下面是以上各類的繼續關系
TObject
  
TStream
  
+---------------------------+---------------------------+--------------------+-------------------+------------+
                                                                      
THandleStream TCustomMemoryStream TWinsocketStream TBlobStream TOleStream  TStringStream
                  
TFileStream  TMemoryStream
                    
            +-------------------------------------------+
                                        
        TClientBlobStream          TResourceStream


第二章 流對象的屬性及方法簡介

關于各屬性和方法的具體語法請見CBUILDER的幫助

一. TStream介紹
屬性
        Position:當前位置指針
        Size:流的大小,單位為字節
方法
        CopyFrom:從一個流往另一個流拷貝數據
        Read:從流中讀取一定字節的數據到緩沖區,返回讀取的字節數
        ReadBuffer:從流中讀取一定字節的數據到緩沖區,如不正確則異常
        ReadComponent:從流中取出一個組件
        ReadComponentRes:以Windows的資源文件格式從流中讀取一組件
        Seek:定位流的當前位置指針
        SetSize:設置流的大小。
        Write:從緩沖區中將一定字節的數據寫入到流中,返回寫入的字節數
        WriteBuffer:從緩沖區中將一定字節的數據寫入到流中,失敗則異常
        WriteComponent:將一組件寫入到流中

        WriteComponentRes:將一組件以Windows資源文件的格式寫入到流中

注重:不能直接建立一個TStream類型的流對象

二. THandleStream介紹
屬性
        Handle:流對象要讀寫的通迅資源的句柄
        Size:句柄所標識的資源的大小,單位為字節
方法
        Read:從流中讀數據到緩沖區中
        Seek:設置流的當前位置
        SetSize:設置流的大小,不成功則返回一個異常
        THandleStream:通過一個打開的句柄建立一個句柄流對象
        Write:將數據從緩沖區中寫入到流
可以使用THandleStream流對象來存取如文件、套接字、命名管道、郵槽等打開了句柄的通迅資源。下面是一個使用句柄流對象進行文件操作的片段代碼:
//////////////////////////////////////////////////////////////////////////////////////////////
////將c:/config.sys文件中的內容讀入到一個文本框中
int fileHandle;
THandleStream *fileStream;

fileHandle = FileOpen(“c://config.sys”,fmOpenRead);
if(fileHandle == -1)  return ;  //打開文件出錯

fileStream = new THandleStream(fileHandle);

char buffer[10001];
unsigned long bufferSize;
do
{
    bufferSize = fileStream->Read(buffer, 10000);
    if (bufferSize > 0 )
    {
        buffer[bufferSize] = 0;
        Memo1->Text += buffer;
    }
}while( bufferSize == 10000 );

delete fileStream;
FileClose(fileHandle); //請注重一定要先注銷流對象才能關閉句柄



三. TCustomMemoryStream介紹
屬性
        Memory:指向內存流對象的實際內存的指針,可用該指針直接訪問內存流的內存
方法
        Read:從流中讀數據到緩沖區中
        SaveToFile:將內存流中的數據保存到文件中
        SaveToStream:將內存流中的數據保存到其它流對象中
        Seek:設置流對象的當前位置
        SetPointer:設置與內存流對象相關聯的內存池

注重:該類為純虛類,不能直接建立其對象。應使用TMemoryStream或是TResourceStream。

四. TWinSocketStream介紹
屬性
        TimeOut:設置在讀或寫Socket時的超時值,單位:毫秒
方法
        Read:從Socket中讀取指定字節的數據到緩沖區中,返回實際讀取的字節數
        Seek:沒有意義
        TWinSocketStream:根據指定的Socket句柄和超時時間建立一個Socket流對象

        WaitForData:確認是否可以通過Socket連接來發送或接收數據了。
        Write:通過Socket連接發送緩沖區中指定字節的數據

TWinSocketStream流對象用來在阻塞方式的Socket連接中發送和接收數據,從而避免一般情況下的掛起現象。下面是一個用TWinSocketStream進行收發數據的代碼片段:
/////////////////////////////////////////////////////////////////////////////////////////////////////
//在一單獨的線程中通過阻塞式Socket連接發送數據
void __fastcall TMyClientThread::Execute()
{
TWinSocketStream *pStream = new TWinSocketStream(ClientSocket1->Socket, 60000);
try
      {
    while (!Terminated && ClientSocket1->Active)
            {
              try
              {
                    char buffer[10];
                    GetNextRequest(buffer); // GetNext

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 含山县| 呼伦贝尔市| 南皮县| 乌鲁木齐市| 安泽县| 习水县| 斗六市| 延津县| 灵宝市| 咸宁市| 南华县| 宜兰市| 海伦市| 顺义区| 喜德县| 封丘县| 志丹县| 余干县| 开原市| 芦山县| 望都县| 垫江县| 融水| 常熟市| 三亚市| 六枝特区| 天台县| 兰考县| 石屏县| 东平县| 咸宁市| 交口县| 景宁| 旬邑县| 临澧县| 临清市| 昆明市| 江川县| 万源市| 百色市| 南昌县|