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

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

?? mbxfile.pas

?? 包含常用Internet協議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
字號:
{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Author:       Fran鏾is PIETTE
Description:  TMbxFile handle the MBX file format (read only)
              The MBX file format is used by Microsoft Internet Mail.
Warning:      This component is based on my interpretation of the MBX file
              format. I did'nt find any info about it. So there may be errors !
              Currently, no provision is made for deleted messages.
              If you find a problem, please EMail me a description and attach
              the MBX file in error.
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:     November 16, 1997
Version:      1.00
Support:      Use the mailing list twsocket@rtfm.be See website for details.
Legal issues: Copyright (C) 1997, 1998 by Fran鏾is PIETTE
              Rue de Grady 24, 4053 Embourg, Belgium. Fax: +32-4-365.74.56
              <francois.piette@pophost.eunet.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:


 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit MbxFile;

interface

uses
    SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
    Forms, Dialogs, ExtCtrls;

const
    MbxFileVersion = 100;
    MSG_SIGNATURE  = $7F007F00;

type
    TMbxHeader = packed record
        Signature  : array [0..3] of char;
        Reserved1  : Word;
        Reserved2  : Word;
        MsgCount   : LongInt;
        Reserved3  : LongInt;    { A MsgCount copy ? }
        EndPointer : LongInt;
        Reserved4  : array [0..15] of LongInt;
    end;

    TMsgHeader = packed record
        Signature  : LongInt;    { $7F007F00 }
        MsgNum     : LongInt;
        MsgSize    : LongInt;
        Reserved1  : LongInt;
    end;

    TCustomMbxHandler = class(TComponent)
    private
        FFileHdr       : TMbxHeader;
        FFileName      : String;
        FFileStream    : TFileStream;
        FMsgHeader     : TMsgHeader;
        FMsgStream     : TMemoryStream;
        FMsgStreamSize : Integer;
        FCurPos        : LongInt;
    public
        constructor Create(AOwner: TComponent); override;
        destructor  Destroy; override;
        procedure   Open;
        procedure   Close;
        procedure   First;
        procedure   Next;
        procedure   Prior;
        procedure   Last;
    private
        procedure InternalPrior;
        procedure ReadNextMessage;
        procedure SetActive(newValue : Boolean);
        function  GetActive   : Boolean;
        function  GetMsgCount : Integer;
        function  GetMsgNum   : Integer;
        function  GetEof      : Boolean;
        function  GetBof      : Boolean;
    public
        property FileName  : String        read FFileName write FFileName;
        property Active    : Boolean       read GetActive write SetActive;
        property MsgCount  : Integer       read GetMsgCount;
        property MsgNum    : Integer       read GetMsgNum;
        property MsgStream : TMemoryStream read FMsgStream;
        property Eof       : Boolean       read GetEof;
        property Bof       : Boolean       read GetBof;
    end;

    TMbxHandler = class(TCustomMbxHandler)
    published
        property FileName  : String        read FFileName write FFileName;
        property Active    : Boolean       read GetActive write SetActive;
    end;

procedure Register;

implementation


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure Register;
begin
    RegisterComponents('FPiette', [TMbxHandler]);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
constructor TCustomMbxHandler.Create(AOwner : TComponent);
begin
    Inherited Create(AOwner);
    FMsgStreamSize := 4096;
    FMsgStream := TMemoryStream.Create;
    FMsgStream.SetSize(FMsgStreamSize);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
destructor TCustomMbxHandler.Destroy;
begin
    Close;
    FMsgStream.Free;
    FMsgStreamSize := 0;
    Inherited Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomMbxHandler.Open;
begin
    Close;
    FFileStream := TFileStream.Create(FFileName, fmOpenRead + fmShareDenyNone);
    FFileStream.Read(FFileHdr, SizeOf(FFileHdr));
    if FFileHdr.Signature <> 'JMF6' then begin
        Close;
        raise Exception.Create('Not an EMail file');
    end;

    if MsgCount <= 0 then
        Exit;
    ReadNextMessage;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomMbxHandler.Close;
begin
    if Assigned(FFileStream) then begin
        FFileStream.Free;
        FFileStream := nil;
    end;;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomMbxHandler.First;
begin
    if not Assigned(FFileStream) then
        raise Exception.Create('Message file not opened');
    if MsgCount <= 0 then
        Exit;
    FFileStream.Position := SizeOf(TMbxHeader);
    ReadNextMessage;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomMbxHandler.Last;
begin
    if not Assigned(FFileStream) then
        raise Exception.Create('Message file not opened');
    if MsgCount <= 0 then
        Exit;
    FCurPos := FFileStream.Seek(0, soFromEnd);
    InternalPrior;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomMbxHandler.Next;
begin
    if not Assigned(FFileStream) then
        raise Exception.Create('Message file not opened');

    if Eof then
        raise Exception.Create('No more message');

    ReadNextMessage;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomMbxHandler.Prior;
begin
    if not Assigned(FFileStream) then
        raise Exception.Create('Message file not opened');

    if Bof then
        raise Exception.Create('No more message');
    InternalPrior;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomMbxHandler.ReadNextMessage;
begin
    FCurPos := FFileStream.Position;
    FFileStream.Read(FMsgHeader, SizeOf(FMsgHeader));
    if FMsgHeader.Signature <> MSG_SIGNATURE then begin
        Close;
        raise Exception.Create('Invalid signature in message header');
    end;
    if FMsgStreamSize <= FMsgHeader.MsgSize then begin
        FMsgStreamSize := (((FMsgHeader.MsgSize + 1) div 4096) + 1) * 4096;
        FMsgStream.SetSize(FMsgStreamSize);
    end;
    FMsgStream.Seek(0, soFromBeginning);
    FFileStream.Read(FMsgStream.Memory^, FMsgHeader.MsgSize - 16);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomMbxHandler.SetActive(newValue : Boolean);
begin
   if newValue = Assigned(FFileStream) then
       Exit;
   if newValue then
       Open
   else
       Close;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TCustomMbxHandler.GetActive : Boolean;
begin
    Result := Assigned(FFileStream);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TCustomMbxHandler.GetMsgCount : Integer;
begin
    if not Assigned(FFileStream) then
        raise Exception.Create('Message file not opened');
    Result := FFileHdr.MsgCount;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TCustomMbxHandler.GetMsgNum : Integer;
begin
    if not Assigned(FFileStream) then
        raise Exception.Create('Message file not opened');
    Result := FMsgHeader.MsgNum;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TCustomMbxHandler.GetEof : Boolean;
begin
    Result := (not Assigned(FFileStream)) or
              (MsgCount <= 0) or (MsgNum >= MsgCount);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TCustomMbxHandler.GetBof : Boolean;
begin
    Result := (not Assigned(FFileStream)) or
              (MsgCount <= 0) or (MsgNum <= 1);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomMbxHandler.InternalPrior;
var
    NewPos : LongInt;
    Buf    : PChar;
    p      : PChar;
    More   : Boolean;
    Sign   : LongInt;
    Cnt    : Integer;
begin
    Buf := FMsgStream.Memory;

    Cnt    := 4096;
    NewPos := FCurPos - Cnt;
    More   := TRUE;
    while More do begin
        if NewPos < SizeOf(TMbxHeader) then begin
            Cnt    := Cnt - SizeOf(TMbxHeader) + NewPos;
            NewPos := SizeOf(TMbxHeader);
        end;
        FFileStream.Position := NewPos;
        FFileStream.Read(Buf^, Cnt);
        p := Buf + Cnt - 1;
        while (p > Buf) do begin
            while (p >= Buf) and (p^ <> #$7F) do
                Dec(p);
            if p^ = #$7F then begin
                FFileStream.Position := NewPos + p - Buf - 3;
                FFileStream.Read(Sign, SizeOf(Sign));
                if Sign = MSG_SIGNATURE then begin
                    NewPos := NewPos + p - Buf - 3;
                    More   := FALSE;
                    Break;
                end;
            end;
            Dec(p);
        end;

        if not More then
            Break;

        if NewPos <= SizeOf(TMbxHeader) then
            break;

        Cnt    := 4096;
        NewPos := NewPos - Cnt;
    end;
    FFileStream.Position := NewPos;
    ReadNextMessage;
end;


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

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久国产精品影院| 久久先锋影音av鲁色资源网| 国产精品一区二区免费不卡| 亚洲精品中文在线| 久久综合av免费| 日韩欧美视频一区| 久久一区二区视频| 久久综合国产精品| 国产女主播在线一区二区| 国产女主播一区| 亚洲精品中文在线| 日韩黄色一级片| 久久国产人妖系列| 国产精品99久久久久久宅男| 成人开心网精品视频| 91日韩一区二区三区| 欧美视频一区在线观看| 91麻豆成人久久精品二区三区| 9i看片成人免费高清| 欧美国产精品久久| 国产三级精品视频| 亚洲欧洲成人自拍| 日韩av网站在线观看| 国产综合成人久久大片91| 粗大黑人巨茎大战欧美成人| 色先锋aa成人| 日韩精品最新网址| 国产精品理论在线观看| 亚洲福利电影网| 国产超碰在线一区| 欧美性极品少妇| 2021国产精品久久精品| 中文字幕一区二区三区乱码在线| 一区二区三区日韩在线观看| 精品一区二区在线免费观看| 99久久夜色精品国产网站| 另类人妖一区二区av| 无码av中文一区二区三区桃花岛| 免费高清在线一区| www.欧美精品一二区| 欧美一区二区三区成人| 国产精品国产三级国产普通话蜜臀| 日韩中文字幕区一区有砖一区| 国产精品亚洲一区二区三区妖精| 欧美制服丝袜第一页| 日本一区二区三区视频视频| 午夜精品国产更新| 白白色 亚洲乱淫| 精品国产乱码久久久久久闺蜜| 亚洲欧美日韩国产手机在线| 精品亚洲成a人| 欧美高清精品3d| 一区二区三区久久久| 国产99久久久国产精品潘金网站| 欧美一区二区在线观看| 一区二区三区加勒比av| 成人黄色网址在线观看| 亚洲精品一区在线观看| 老司机精品视频在线| 欧美电影影音先锋| 亚洲综合自拍偷拍| 色久优优欧美色久优优| 亚洲免费高清视频在线| 国产一区二区三区香蕉| 免费久久精品视频| 亚洲三级免费电影| 精品国产sm最大网站| 欧美三区免费完整视频在线观看| 免费成人结看片| 91在线丨porny丨国产| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产麻豆9l精品三级站| 欧美日韩一区小说| 午夜久久久久久久久| 欧美无砖砖区免费| 亚洲一二三四区不卡| 色中色一区二区| 国产精品素人一区二区| 国产美女一区二区三区| 午夜视黄欧洲亚洲| 欧美色综合天天久久综合精品| 亚洲激情中文1区| 欧美亚洲尤物久久| 日韩中文字幕av电影| 在线播放日韩导航| 精品一区二区三区免费毛片爱| 久久亚洲综合色一区二区三区| 高清视频一区二区| 国产欧美精品在线观看| 波多野结衣91| 一区二区三区国产| 欧美一区二区三区电影| 国产乱子伦一区二区三区国色天香| 精品成人一区二区三区四区| 国产成人亚洲综合a∨婷婷 | 亚洲高清视频的网址| 91精品国产综合久久久蜜臀粉嫩| 亚洲电影一区二区三区| www.日韩在线| 精品国产伦一区二区三区免费| 久久久久99精品一区| 91在线国产福利| 视频一区中文字幕国产| 国产亚洲欧美中文| 色婷婷久久99综合精品jk白丝| 五月天中文字幕一区二区| 久久久综合精品| 欧美性生活影院| 国产精一区二区三区| 亚洲制服丝袜一区| 2021久久国产精品不只是精品| 色综合色狠狠综合色| 麻豆免费精品视频| 亚洲裸体在线观看| 精品国产一区a| 欧美伊人久久大香线蕉综合69 | 国产麻豆精品视频| 一区二区视频在线| 久久久久久久久久久久电影 | 中文字幕高清不卡| 欧美日本一道本| aaa亚洲精品一二三区| 麻豆视频一区二区| 亚洲第一电影网| 国产精品久久看| 久久久精品日韩欧美| 日韩一区二区三区视频| 色偷偷成人一区二区三区91| 国产精品一区二区在线播放| 午夜影视日本亚洲欧洲精品| 国产精品不卡在线观看| 久久免费午夜影院| 日韩欧美国产综合一区| 欧美日产国产精品| 日本乱人伦一区| 99视频有精品| 从欧美一区二区三区| 国产成人精品亚洲日本在线桃色 | 亚洲国产日韩在线一区模特| 国产午夜久久久久| 久久综合九色综合久久久精品综合| 欧美日韩一区二区三区视频 | 日韩一区二区免费电影| 欧美日韩一区中文字幕| 欧美视频日韩视频| 在线一区二区三区| 在线观看亚洲精品视频| 色综合网色综合| 色哟哟在线观看一区二区三区| 成人手机在线视频| 成人97人人超碰人人99| 成人亚洲精品久久久久软件| 国产ts人妖一区二区| 粉嫩aⅴ一区二区三区四区| 国产精品系列在线观看| 国产不卡免费视频| 99久久精品国产导航| 99视频在线观看一区三区| 99久久国产免费看| 欧美吞精做爰啪啪高潮| 欧美日韩mp4| 精品少妇一区二区三区在线播放 | 福利一区二区在线| 成人免费毛片片v| 色综合久久中文字幕| 欧美日本一区二区三区四区| 欧美一区二区三区视频在线观看 | 色欲综合视频天天天| 在线观看欧美日本| 欧美日韩一级二级| 欧美大尺度电影在线| 国产精品亚洲а∨天堂免在线| 国产精品99久久久久久似苏梦涵| 91网站在线播放| 国产乱子伦视频一区二区三区 | 日本麻豆一区二区三区视频| 日韩av不卡一区二区| 黄色资源网久久资源365| 盗摄精品av一区二区三区| 色综合天天综合在线视频| 欧美精品在线观看播放| 久久久噜噜噜久久人人看| 亚洲男人的天堂在线观看| 免费看日韩精品| 成人免费看的视频| 欧美日本乱大交xxxxx| 国产日韩欧美亚洲| 日韩影视精彩在线| 波多野结衣视频一区| 7777精品伊人久久久大香线蕉| 狠狠久久亚洲欧美| 亚洲国产日韩在线一区模特| 一区二区三区四区五区视频在线观看 | 国产片一区二区| 亚洲一区二区免费视频| 国产精品白丝av| 日韩一区二区视频在线观看| 国产精品久久久久久久久动漫| 美女在线一区二区| 在线看一区二区|