亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wsockbuf.pas

?? 紅外通訊套件 delphi控件 可用于 手機 電腦 之間的紅外通訊編程
?? PAS
字號:
{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Author:       Fran鏾is PIETTE
Description:  TBuffer is an object wich buffers data in a single dynamically
              allocated memory block. It is a kind of FIFO wich manages
              characters in bloc of various sizes.
EMail:        http://users.swing.be/francois.piette  francois.piette@swing.be
              http://www.rtfm.be/fpiette             francois.piette@rtfm.be
              francois.piette@pophost.eunet.be
Creation:     April 1996
Version:      2.01
Support:      Use the mailing list twsocket@rtfm.be See website for details.
Legal issues: Copyright (C) 1997-2000 by Fran鏾is PIETTE
              Rue de Grady 24, 4053 Embourg, Belgium. Fax: +32-4-365.74.56
              <francois.piette@pophost.eunet.be><francois.piette@swing.be>

              This software is provided 'as-is', without any express or
  	      implied warranty.  In no event will the author be held liable
              for any  damages arising from the use of this software.

              Permission is granted to anyone to use this software for any
              purpose, including commercial applications, and to alter it
              and redistribute it freely, subject to the following
              restrictions:

              1. The origin of this software must not be misrepresented,
                 you must not claim that you wrote the original software.
                 If you use this software in a product, an acknowledgment 
                 in the product documentation would be appreciated but is
                 not required.

              2. Altered source versions must be plainly marked as such, and
                 must not be misrepresented as being the original software.

              3. This notice may not be removed or altered from any source
                 distribution.
                 
              4. You must register this software by sending a picture postcard
                 to the author. Use a nice stamp and mention your name, street
                 address, EMail address and any comment you like to say.

Updates:
Mar 06, 1998  V2.00 Added a property and a parameter for the create method
              to select the buffer size. Using a 0 value will make the object
              use the default 1514 bytes (the largest size for an ethernet
              packet).
Jul 08, 1998  V2.01 Adadpted for Delphi 4


 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit WSockBuf;

interface

uses
  SysUtils;

const
  WSockBufVersion = 201;

type
  TBuffer = class(TObject)
    Buf      : Pointer;
    FBufSize : Integer;
    WrCount  : Integer;
    RdCount  : Integer;
  public
    constructor Create(nSize : Integer); virtual;
    destructor  Destroy; override;
    function    Write(Data : Pointer; Len : Integer) : Integer;
    function    Read(Data : Pointer; Len : Integer) : Integer;
    function    Peek(var Len : Integer) : Pointer;
    function    Remove(Len : Integer) : Integer;
    procedure   SetBufSize(newSize : Integer);
    property    BufSize : Integer read FBufSize write SetBufSize;
  end;

implementation


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
constructor TBuffer.Create(nSize : Integer);
begin
    inherited Create;
    WrCount  := 0;
    RdCount  := 0;
    BufSize := nSize;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
destructor TBuffer.Destroy;
begin
    if Assigned(Buf) then
        FreeMem(Buf, FBufSize);

    inherited Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TBuffer.SetBufSize(newSize : Integer);
var
    newBuf : Pointer;
begin
    if newSize <= 0 then
        newSize := 1514;

    if newSize = FBufSize then
        Exit;

    if WrCount = RdCount then begin
        { Buffer is empty }
        if Assigned(Buf) then
            FreeMem(Buf, FBufSize);
        FBufSize := newSize;
        GetMem(Buf, FBufSize);
    end
    else begin
        { Buffer contains data }
        GetMem(newBuf, newSize);
        Move(Buf^, newBuf^, WrCount);
        if Assigned(Buf) then
            FreeMem(Buf, FBufSize);
        FBufSize := newSize;
        Buf      := newBuf;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TBuffer.Write(Data : Pointer; Len : Integer) : Integer;
var
    Remaining : Integer;
    Copied    : Integer;
begin
    Remaining := FBufSize - WrCount;
    if Remaining <= 0 then
        Result := 0
    else begin
        if Len <= Remaining then
            Copied := Len
        else
            Copied := Remaining;
        Move(Data^, (PChar(Buf) + WrCount)^, Copied);
        WrCount := WrCount + Copied;
        Result  := Copied;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TBuffer.Read(Data : Pointer; Len : Integer) : Integer;
var
    Remaining : Integer;
    Copied    : Integer;
begin
    Remaining := WrCount - RdCount;
    if Remaining <= 0 then
        Result := 0
    else begin
        if Len <= Remaining then
            Copied := Len
        else
            Copied := Remaining;
        Move((PChar(Buf) + RdCount)^, Data^, Copied);
        RdCount := RdCount + Copied;

        if RdCount = WrCount then begin
            RdCount := 0;
            WrCount := 0;
        end;

        Result := Copied;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TBuffer.Peek(var Len : Integer) : Pointer;
var
    Remaining : Integer;
begin
    Remaining := WrCount - RdCount;
    if Remaining <= 0 then begin
        Len    := 0;
        Result := nil;
    end
    else begin
        Len    := Remaining;
        Result := PChar(Buf) + RdCount;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TBuffer.Remove(Len : Integer) : Integer;
var
    Remaining : Integer;
    Removed   : Integer;
begin
    Remaining := WrCount - RdCount;
    if Remaining <= 0 then
        Result := 0
    else begin
        if Len < Remaining then
            Removed := Len
        else
            Removed := Remaining;
        RdCount := RdCount + Removed;

        if RdCount = WrCount then begin
            RdCount := 0;
            WrCount := 0;
        end;

        Result := Removed;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99视频有精品| 色综合一个色综合亚洲| 国产精品欧美一区喷水| 欧美一区二区啪啪| 成人免费va视频| 日韩av在线免费观看不卡| 国产精品入口麻豆九色| 91精品国产综合久久婷婷香蕉 | 国产精品12区| 午夜电影一区二区三区| 日韩美女久久久| 久久蜜桃av一区二区天堂| 精品视频一区二区不卡| 色综合久久久久综合| 国产成人精品亚洲日本在线桃色 | 久久免费看少妇高潮| 91精品国产乱码| 欧美中文字幕一区| 99在线热播精品免费| 粉嫩高潮美女一区二区三区 | 免播放器亚洲一区| 亚洲自拍偷拍av| 亚洲欧美偷拍另类a∨色屁股| 国产亚洲欧美色| 精品国产精品网麻豆系列| 欧美日韩国产首页| 在线观看国产一区二区| 色综合久久天天| 91在线小视频| 91污在线观看| 91啪九色porn原创视频在线观看| 成人午夜精品一区二区三区| 国产精品中文字幕一区二区三区| 久久精品国产77777蜜臀| 免费观看久久久4p| 日本不卡免费在线视频| 日韩av网站在线观看| 丝瓜av网站精品一区二区| 亚洲午夜精品17c| 亚洲夂夂婷婷色拍ww47| 亚洲1区2区3区视频| 日韩在线一区二区| 免费成人在线网站| 久久99国产精品麻豆| 久久 天天综合| 狠狠色狠狠色综合日日91app| 久久福利资源站| 国产suv精品一区二区883| 不卡的av中国片| 色综合久久久久| 欧美美女视频在线观看| 91精品国产一区二区人妖| 欧美变态tickle挠乳网站| 久久亚洲春色中文字幕久久久| 337p粉嫩大胆噜噜噜噜噜91av| 国产日产欧美一区二区视频| 国产精品色哟哟| 亚洲日本一区二区三区| 亚洲影院久久精品| 日韩av中文字幕一区二区三区 | 粉嫩av一区二区三区在线播放| av中文字幕亚洲| 91久久奴性调教| 欧美日韩视频在线第一区| 日韩一级黄色片| 国产日韩欧美电影| 亚洲蜜桃精久久久久久久| 亚洲精品欧美二区三区中文字幕| 五月综合激情日本mⅴ| 激情综合色播激情啊| av在线这里只有精品| 欧美日韩国产一级片| 精品国产第一区二区三区观看体验 | 成人夜色视频网站在线观看| 色天使久久综合网天天| 日韩视频在线一区二区| 亚洲欧洲美洲综合色网| 肉色丝袜一区二区| 懂色av一区二区三区免费看| 欧美在线一区二区三区| 欧美成人a视频| 亚洲少妇最新在线视频| 看电视剧不卡顿的网站| 99视频国产精品| 91精品国产乱码| 18欧美乱大交hd1984| 蜜桃久久久久久久| 99国产精品久久久久久久久久 | 99视频热这里只有精品免费| 欧美日韩免费观看一区二区三区| 久久麻豆一区二区| 亚洲乱码一区二区三区在线观看| 麻豆中文一区二区| 欧美最新大片在线看| 久久婷婷久久一区二区三区| 亚洲成年人网站在线观看| 国产91精品久久久久久久网曝门| 欧美日韩午夜影院| 日韩一区中文字幕| 国产在线精品一区二区| 欧美片网站yy| 亚洲精品日韩一| 成人久久久精品乱码一区二区三区| 4438x成人网最大色成网站| 亚洲图片欧美激情| 国产精品99精品久久免费| 91精品国产91久久综合桃花| 亚洲人成网站在线| 国产98色在线|日韩| 精品国产亚洲一区二区三区在线观看 | 亚洲在线免费播放| 99视频一区二区| 国产女同性恋一区二区| 美日韩黄色大片| 欧美剧情电影在线观看完整版免费励志电影 | 激情综合亚洲精品| 在线播放/欧美激情| 亚洲黄色片在线观看| 成人免费毛片嘿嘿连载视频| 精品国产91乱码一区二区三区| 亚洲成人动漫av| 欧美性猛交xxxx乱大交退制版 | 国产女主播视频一区二区| 精品综合久久久久久8888| 在线综合+亚洲+欧美中文字幕| 亚洲综合视频网| 日本韩国欧美三级| 一区二区三区四区五区视频在线观看 | 国产精品网站在线观看| 国产精品一区二区免费不卡| 日韩午夜中文字幕| 日本中文字幕不卡| 制服丝袜亚洲精品中文字幕| 亚洲高清三级视频| 欧美日韩免费观看一区二区三区| 成人深夜福利app| 国产精品久久久久久久久果冻传媒 | 亚洲欧洲制服丝袜| 在线观看成人免费视频| 一区二区三区成人在线视频| 91丨九色丨尤物| 一区二区欧美国产| 欧美日韩一级片网站| 午夜a成v人精品| 日韩一区二区三区视频在线观看 | 99久久久久免费精品国产| 亚洲色图视频网| 日本高清成人免费播放| 亚洲制服丝袜一区| 欧美一二三区在线观看| 国产一区免费电影| 国产精品久久看| 欧美中文字幕一区| 日本vs亚洲vs韩国一区三区| 日韩欧美综合在线| 国产不卡在线播放| 亚洲免费视频中文字幕| 欧美精品在线观看播放| 麻豆精品一区二区av白丝在线| 2024国产精品视频| 91在线观看地址| 亚洲18影院在线观看| 欧美mv日韩mv国产网站| 成人精品小蝌蚪| 亚洲精选视频免费看| 91麻豆精品国产91久久久更新时间 | 337p粉嫩大胆噜噜噜噜噜91av| 国产伦精品一区二区三区免费| 国产精品久久久久影院色老大| 91国模大尺度私拍在线视频| 日韩精品成人一区二区在线| 久久亚洲精华国产精华液| 91在线视频网址| 免费观看在线色综合| 中文字幕欧美区| 欧美日韩精品一区二区三区蜜桃| 美国毛片一区二区三区| 国产精品毛片a∨一区二区三区| 在线观看视频91| 国产精品自拍av| 亚洲一区二区3| 日本一区二区三区久久久久久久久不 | 99re这里都是精品| 日本午夜精品一区二区三区电影 | 欧美一区日韩一区| 成人动漫一区二区在线| 亚洲国产日韩av| 国产三级一区二区三区| 欧美日韩一卡二卡三卡| 国产超碰在线一区| 青青青爽久久午夜综合久久午夜 | 亚洲五码中文字幕| 国产日韩欧美a| 欧美日韩精品电影| 国产成人精品亚洲日本在线桃色| 亚洲福利一二三区| 综合婷婷亚洲小说| 久久只精品国产| 一区二区三区四区视频精品免费 | 欧美区视频在线观看|