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

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

?? wsockbuf.pas

?? 紅外通訊套件IrD Socket
?? 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一区二区三区免费野_久草精品视频
精品伦理精品一区| 欧美日韩精品欧美日韩精品一| 久久一区二区三区国产精品| 欧美aaaaaa午夜精品| 欧美一区二区在线看| 久久99久久99小草精品免视看| 欧美精品一区二区三区一线天视频| 久久精品国产秦先生| 久久久久九九视频| av激情综合网| 亚洲国产成人tv| 日韩精品一区二区三区在线观看 | 天天免费综合色| 欧美精品免费视频| 韩国av一区二区三区| 欧美国产视频在线| 欧美在线视频不卡| 麻豆精品在线播放| 日本一区二区免费在线| 在线国产亚洲欧美| 精品一区二区三区视频| 国产精品久久久久一区| 欧美色综合天天久久综合精品| 日本人妖一区二区| 国产精品午夜免费| 欧美日韩亚洲综合在线| 精品一区二区三区欧美| 中文字幕综合网| 日韩视频永久免费| 成人动漫一区二区在线| 午夜国产精品影院在线观看| 久久综合狠狠综合久久综合88| 91麻豆免费观看| 蜜桃一区二区三区在线观看| 国产精品久久久久久久久免费丝袜 | 在线国产亚洲欧美| 经典三级视频一区| 亚洲最大色网站| 欧美精品一区二区三区久久久| 色综合久久88色综合天天6| 琪琪一区二区三区| 亚洲色图清纯唯美| 欧美精品一区二区三区在线| 欧美视频一区在线| 成人国产一区二区三区精品| 青青国产91久久久久久| 亚洲欧美二区三区| 国产亚洲女人久久久久毛片| 在线电影一区二区三区| 94色蜜桃网一区二区三区| 久久av资源站| 丝袜美腿亚洲一区二区图片| 1区2区3区精品视频| 久久婷婷国产综合国色天香| 欧美日韩亚洲国产综合| 色综合色狠狠天天综合色| 国产精品99久久久久久久vr| 蜜臀va亚洲va欧美va天堂| 亚洲无线码一区二区三区| 一区二区中文字幕在线| xfplay精品久久| 欧美一区二区观看视频| 欧美日韩精品免费观看视频| 99久久99精品久久久久久| 国产精品538一区二区在线| 麻豆一区二区在线| 久久精品国产秦先生| 免费日韩伦理电影| 蜜桃精品视频在线| 水蜜桃久久夜色精品一区的特点| 一区二区三区中文字幕电影| 亚洲图片你懂的| 国产精品久久久久久久久免费桃花 | 男人的天堂亚洲一区| 亚洲在线中文字幕| 一级精品视频在线观看宜春院| 亚洲欧美二区三区| 一区二区视频在线| 一区二区三国产精华液| 亚洲国产日韩一级| 亚洲成人在线免费| 亚洲高清在线视频| 日本视频中文字幕一区二区三区| 天涯成人国产亚洲精品一区av| 婷婷中文字幕综合| 日韩国产一区二| 久久激五月天综合精品| 国产一区二三区| 国产成人亚洲综合a∨婷婷图片| 国产福利91精品| 成人精品亚洲人成在线| 91麻豆国产在线观看| 欧美视频在线播放| 51久久夜色精品国产麻豆| 欧美一级精品大片| 久久亚洲一区二区三区四区| 久久久不卡影院| 国产精品初高中害羞小美女文| 亚洲欧美日本在线| 午夜激情久久久| 国产麻豆精品一区二区| 91在线无精精品入口| 欧美性大战久久久| 欧美本精品男人aⅴ天堂| 国产精品麻豆网站| 亚洲影视在线播放| 九九视频精品免费| 99久久伊人久久99| 欧美精品日韩一区| 国产欧美日韩在线看| 一区二区三区四区蜜桃| 日韩经典一区二区| 成人美女视频在线看| 欧美性视频一区二区三区| 日韩美女主播在线视频一区二区三区 | 欧美性猛交xxxx乱大交退制版| 日韩一区二区在线看片| 日本一区二区动态图| 亚洲国产视频一区二区| 国产一区二区三区四| 色噜噜狠狠一区二区三区果冻| 91精品国产色综合久久不卡电影| 久久久久久久久久看片| 亚洲一区二区在线免费观看视频 | 国产精品主播直播| 91老司机福利 在线| 欧美白人最猛性xxxxx69交| 亚洲视频你懂的| 久久se精品一区二区| 欧美中文字幕一二三区视频| 精品国产乱码久久久久久久久 | 麻豆专区一区二区三区四区五区| 99久免费精品视频在线观看| 91麻豆精品国产自产在线观看一区| 中文乱码免费一区二区| 三级在线观看一区二区| 91小视频免费观看| 国产视频一区二区在线| 美女免费视频一区二区| 欧美中文字幕亚洲一区二区va在线 | 国产精品一二三四| 欧美人与z0zoxxxx视频| 国产精品成人免费 | 国产揄拍国内精品对白| 欧美久久一二区| 亚洲人成网站影音先锋播放| 国产一区二区三区在线看麻豆 | 26uuu另类欧美亚洲曰本| 无吗不卡中文字幕| 欧美在线不卡一区| 自拍偷自拍亚洲精品播放| 国产精品18久久久久久久久久久久 | 91色porny蝌蚪| 国产精品久久毛片a| 国产原创一区二区三区| 日韩精品一区在线| 秋霞电影网一区二区| 欧美日韩激情一区| 亚洲国产精品久久久久秋霞影院| eeuss鲁片一区二区三区| 国产日韩欧美a| 高清av一区二区| 久久久久久久久99精品| 极品少妇一区二区| 日韩片之四级片| 久久精品国产亚洲一区二区三区| 欧美一区二区久久久| 日韩电影免费一区| 日韩三级高清在线| 久久国内精品视频| 欧美成人伊人久久综合网| 奇米888四色在线精品| 欧美一区二区三区小说| 久久精品国产色蜜蜜麻豆| 欧美精品一区二区在线播放 | 亚洲天堂免费在线观看视频| 99v久久综合狠狠综合久久| 亚洲视频图片小说| 欧美午夜不卡视频| 视频一区二区国产| 欧美一卡2卡3卡4卡| 国产尤物一区二区在线| 国产精品素人一区二区| 不卡的电影网站| 一区二区三区精品在线观看| 欧美色图免费看| 青青草原综合久久大伊人精品优势| 欧美成人国产一区二区| 国产精品一区2区| 国产精品久久午夜夜伦鲁鲁| 在线观看精品一区| 日韩av一区二区三区四区| 精品粉嫩超白一线天av| 成人国产免费视频| 亚洲一区二区精品久久av| 欧美日韩亚洲丝袜制服| 香蕉影视欧美成人| 日韩欧美一级二级三级| 国产精品12区| 亚洲乱码一区二区三区在线观看|