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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? unit1.pas

?? .net 方面的開發(fā)說明資料。
?? PAS
字號(hào):
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, Menus, ToolWin,
  OpenNet, eTransportIRC;

const
  WM_ETRANSPORT = WM_APP + 8192;
  CHANNEL = '#mp3friends';
  CHANNEL_SIZE = 12;

type
  PChannel = ^TChannel;
  TChannel = record
    channel : string;
    topic : string;
    send_text : string;
    text : TStringList;
    nicks : TStringList;
  end;

  TForm1 = class(TForm)
    TabControl1: TTabControl;
    Panel4: TPanel;
    Panel3: TPanel;
    Edit1: TEdit;
    Timer1: TTimer;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Connect1: TMenuItem;
    Options1: TMenuItem;
    Exit1: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    Panel1: TPanel;
    Panel2: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    ListBox1: TListBox;
    Panel5: TPanel;
    ScrollBar1: TScrollBar;
    Memo1: TMemo;
    procedure Panel3Resize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Connect1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure TabControl1Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    m_transport : TRANSPORT_HANDLE;
    m_channels : array of TChannel;
    m_send_text : string;
    m_widths : array[0..255] of Byte;
    m_height : integer;
  private
    function FindChannel(channel : string) : PChannel;
    procedure SendString(channel, message : string);
    procedure CallbackSystem(handle : TRANSPORT_HANDLE; event : PEpEvent);
    procedure CallbackIRC(handle : TRANSPORT_HANDLE; event : PEpEvent);
    procedure Callback(handle : TRANSPORT_HANDLE; event : PEpEvent); virtual;
    procedure InternalCallback(var msg : TMessage); message WM_ETRANSPORT;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// ---------------------------------------------------------------------------

procedure TransCallback(handle : TRANSPORT_HANDLE; event : PEpEvent; data : Pointer); stdcall;
begin
  SendMessage(Form1.Handle, WM_ETRANSPORT, Integer(handle), Integer(event));
end;

// ---------------------------------------------------------------------------

procedure TForm1.Panel3Resize(Sender: TObject);
begin
  Edit1.Left := 0;
  Edit1.Top := 0;
  Edit1.Width := Panel3.Width;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i : integer;

begin
  EpInit;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  EpFinalize;
end;

procedure TForm1.InternalCallback(var msg : TMessage);
begin
  Callback(TRANSPORT_HANDLE(msg.wparam), PEpEvent(msg.lparam));
end;

function TForm1.FindChannel(channel : string) : PChannel;
var
  i : integer;

begin
  // find the channel, if found, then add the text to it

  for i := 0 to Length(m_channels) - 1 do
    if m_channels[i].channel = string(channel) then
    begin
      Result := @m_channels[i];
      Exit;
    end;

  // channel not found... add a new channel

  i := Length(m_channels);

  SetLength(m_channels, i + 1);
  m_channels[i].channel := channel;
  m_channels[i].text := TStringList.Create;
  m_channels[i].nicks := TStringList.Create;

  TabControl1.Tabs.Add(channel);
  TabControl1.TabIndex := i + 1;
  TabControl1Change(self);

  Result := @m_channels[i];
end;

procedure TForm1.SendString(channel, message : string);
var
  ch : PChannel;

begin
  ch := FindChannel(channel);

  if ch <> nil then
  begin
    ch^.text.Append(message);

    if ch.channel = channel then
      Memo1.Lines.Append(message);
 end;
end;

procedure TForm1.CallbackSystem(handle : TRANSPORT_HANDLE; event : PEpEvent);
var
  action : EpAction;
  user : IRCUser;
  conn_data : PConnection;

begin
  case SYSTEM_PROTOCOL(event.msg) of
    SYSTEM_CONNECTION_CHANGED :
    begin
      conn_data := PConnection(event.data);

      if conn_data^ = ECS_CONNECTED then
      begin
        Memo1.Lines.Append('Connected');

        action.protocol := CLSID_IRC_PROTOCOL;
        action.msg := Integer(IRC_CMD_PASS);
        action.data := PByte(PChar('40968192'));
        action.size := 9;
        action.timeout := 0;

        EpSendAction(handle, @action);

        action.msg := Integer(IRC_CMD_NICK);
        action.data := PByte(PChar('NoEscom-'));
        action.size := 9;

        EpSendAction(handle, @action);

        user.username := PChar('guest');
        user.hostname := PChar('tolmoon');
        user.servername := PChar('tolsun');
        user.realname := PChar('Floris van den Berg');

        action.msg := Integer(IRC_CMD_USER);
        action.data := @user;
        action.size := sizeof(IRCUser);

        EpSendAction(handle, @action);
      end;
    end;

    SYSTEM_DATA_IN :
    begin
      Memo1.Lines.Append('data in');
    end;

    SYSTEM_SENT_SUCCEEDED :
    begin
      Memo1.Lines.Append('sent succceeded');
    end;
  end;
end;

procedure TForm1.CallbackIRC(handle : TRANSPORT_HANDLE; event : PEpEvent);
var
  action : EpAction;
  status_message : PIRCStatusMessage;
  private_message : PIRCReplyPrivateMsg;
  nick_entry : PIrcNick;
  channel : PChannel;
  i : integer;

begin
  case IRC_PROTOCOL(event.msg) of
    IRC_RAW :
    begin
      Memo1.Lines.Append('RAW - ' + PChar(event^.data));
    end;

    IRC_NOTICEAUTH :
    begin
      Memo1.Lines.Append(PChar(event^.data));
    end;

    IRC_PING :
    begin
      Memo1.Lines.Append('Ping? Pong!');

      action.protocol := CLSID_IRC_PROTOCOL;
      action.msg := Integer(IRC_CMD_PONG);
      action.data := event^.data;
      action.size := event^.size;
      action.timeout := 0;

      EpSendAction(handle, @action);
    end;

    IRC_STATUS_MESSAGE :
    begin
      status_message := PIRCStatusMessage(event^.data);
      Memo1.Lines.Append(status_message^.message);
    end;

    IRC_PRIVMSG :
    begin
      private_message := PIRCReplyPrivateMsg(event^.data);

      SendString(private_message^.channel, '<' + string(private_message^.nick) + '> ' + string(private_message^.message));
    end;

    IRC_NICK_ENTRY :
    begin
      nick_entry := PIrcNick(event^.data);
      channel := FindChannel(nick_entry.channel);

      if channel <> nil then
      begin
        if channel^.nicks.IndexOf(nick_entry^.nick) = -1 then
        begin
          channel^.nicks.Append(nick_entry^.nick);

          if nick_entry^.channel = channel^.channel then
            ListBox1.Items.Append(nick_entry^.nick);
        end;
      end;
    end;

    IRC_JOIN :
    begin
      nick_entry := PIrcNick(event^.data);
      channel := FindChannel(nick_entry^.channel);

      if channel <> nil then
      begin
        if channel^.nicks.IndexOf(nick_entry^.nick) = -1 then
        begin
          channel^.nicks.Append(nick_entry^.nick);

          if nick_entry^.channel = channel^.channel then
            ListBox1.Items.Append(nick_entry^.nick);
        end;

        SendString(nick_entry^.channel, '* ' + nick_entry^.nick + ' (' + nick_entry^.mask + ') has joined ' + nick_entry^.channel);
      end;
    end;

    IRC_PART :
    begin
      nick_entry := PIrcNick(event^.data);
      channel := FindChannel(nick_entry^.channel);

      if channel <> nil then
      begin
        channel^.nicks.Delete(channel^.nicks.IndexOf(nick_entry^.nick));

        if nick_entry^.channel = channel^.channel then
          ListBox1.Items.Delete(ListBox1.Items.IndexOf(nick_entry^.nick));

        SendString(nick_entry^.channel, '* ' + nick_entry^.nick + ' has left ' + nick_entry^.channel);
      end;
    end;

    IRC_QUIT :
    begin
      nick_entry := PIrcNick(event^.data);

      for i := 0 to Length(m_channels) - 1 do
      begin
        m_channels[i].nicks.Delete(m_channels[i].nicks.IndexOf(nick_entry^.nick));
        m_channels[i].text.Append('* ' + nick_entry^.nick + ' has quit IRC (' + nick_entry^.channel + ')');
      end;

      ListBox1.Items.Delete(ListBox1.Items.IndexOf(nick_entry^.nick));
      Memo1.Lines.Append('* ' + nick_entry^.nick + ' has quit IRC (' + nick_entry^.channel + ')');
    end;
  end;
end;

procedure TForm1.Callback(handle : TRANSPORT_HANDLE; event : PEpEvent);
begin
  if IsEqualGuid(event^.protocol, CLSID_SYSTEM_PROTOCOL) then
    CallbackSystem(handle, event)
  else if IsEqualGuid(event^.protocol, CLSID_IRC_PROTOCOL) then
    CallbackIRC(handle, event);
end;

procedure TForm1.Connect1Click(Sender: TObject);
begin
//  RichEdit1.Lines.Append('* Connecting to amsterdam2.nl.eu.undernet.org (6667)');
  m_transport := EpCreateTransport(CLSID_TRANSPORT_TCPIP, nil, TransCallback);

  if (EpAddProtocol(m_transport, CLSID_IRC_PROTOCOL)) then
     EpConnect(m_transport, 'diemen.nl.eu.undernet.org', 6667, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  action : EpAction;

begin
  action.protocol := CLSID_IRC_PROTOCOL;
  action.msg := Integer(IRC_CMD_JOIN);
  action.data := PByte(PChar(CHANNEL));
  action.size := CHANNEL_SIZE;
  action.timeout := 0;

  EpSendAction(m_transport, @action);
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  action : EpAction;
  message : IRCPrivateMessage;

begin
  if Key = VK_RETURN then
  begin
    m_send_text := Edit1.Text;
    Edit1.Text := '';

    SendString(m_channels[TabControl1.TabIndex - 1].channel, '<NoEscom-> ' + m_send_text);

    message.target := PChar(PChar(m_channels[TabControl1.TabIndex - 1].channel));
    message.message := PChar(m_send_text);

    action.protocol := CLSID_IRC_PROTOCOL;
    action.msg := Integer(IRC_CMD_PRIVMSG);
    action.data := @message;
    action.size := sizeof(IRCPrivateMessage);
    action.timeout := 0;

    EpSendAction(m_transport, @action);
  end;
end;

procedure TForm1.TabControl1Change(Sender: TObject);
var
  i : integer;

begin
//  RichEdit1.Clear;

  if TabControl1.TabIndex > 0 then
  begin
    ListBox1.Clear;

    for i := 0 to m_channels[TabControl1.TabIndex - 1].nicks.Count - 1 do
      ListBox1.Items.Append(m_channels[TabControl1.TabIndex - 1].nicks[i]);

//    for i := 0 to m_channels[TabControl1.TabIndex - 1].text.Count - 1 do
//      RichEdit1.Lines.Append(m_channels[TabControl1.TabIndex - 1].text[i]);
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  EpHeartBeat;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩日av一区二区| 亚洲一区二区五区| 国产尤物一区二区在线| 欧美一级久久久| 麻豆视频一区二区| 精品久久久久久久久久久院品网| 久久99久久精品欧美| 2021中文字幕一区亚洲| 国产老肥熟一区二区三区| 国产精品欧美久久久久一区二区| 成人午夜大片免费观看| 亚洲欧洲日韩av| 欧美性猛片aaaaaaa做受| 香蕉成人伊视频在线观看| 在线播放亚洲一区| 国产一区二区剧情av在线| 中文字幕在线视频一区| 91成人国产精品| 日本怡春院一区二区| 久久精品一区八戒影视| 日本高清不卡视频| 免费在线观看一区| 国产精品毛片大码女人| 欧美日韩激情在线| 国产专区欧美精品| 亚洲码国产岛国毛片在线| 欧美久久久久久久久| 国产乱国产乱300精品| 亚洲欧美另类综合偷拍| 欧美日韩国产综合草草| 国产精品123区| 亚洲一区二区精品视频| 国产亚洲精久久久久久| 欧美亚洲综合另类| 国产精品中文字幕日韩精品| 亚洲制服丝袜一区| 久久久久99精品国产片| 欧美日韩免费视频| 成人黄色片在线观看| 日韩电影免费一区| 亚洲女爱视频在线| 日韩区在线观看| 在线免费观看视频一区| 国产精品一区在线观看你懂的| 一区二区三区av电影| 国产欧美一区二区三区网站| 8x8x8国产精品| 99热国产精品| 国产一区91精品张津瑜| 亚洲一卡二卡三卡四卡五卡| 亚洲国产成人在线| 欧美成人a在线| 欧美人牲a欧美精品| 北岛玲一区二区三区四区| 久久99精品久久久| 天堂av在线一区| 亚洲一区成人在线| 亚洲人成精品久久久久| 国产日韩欧美电影| 久久中文字幕电影| 91精品久久久久久久91蜜桃| 91国产免费观看| 成人美女视频在线看| 久国产精品韩国三级视频| 亚洲国产aⅴ成人精品无吗| 中文字幕中文乱码欧美一区二区 | 久久亚洲精品国产精品紫薇| 欧美日韩电影在线| 欧洲色大大久久| 色噜噜狠狠成人中文综合| 成人深夜在线观看| 激情欧美一区二区三区在线观看| 亚洲午夜精品17c| 亚洲一本大道在线| 亚洲国产欧美日韩另类综合| 一区二区三区自拍| 亚洲一区二区视频| 亚洲一区二区三区四区在线免费观看| 亚洲色图欧洲色图| 亚洲欧美日韩久久| 亚洲男帅同性gay1069| 亚洲精品免费在线观看| 成人免费在线播放视频| 亚洲三级在线免费观看| 亚洲精品免费在线| 亚洲美女一区二区三区| 亚洲一区二区欧美激情| 天天av天天翘天天综合网色鬼国产| 亚洲成a天堂v人片| 日本欧美久久久久免费播放网| 日日夜夜免费精品| 麻豆91在线播放| 国产一区二区三区高清播放| 国产精品资源网站| 91在线视频观看| 色域天天综合网| 欧美无人高清视频在线观看| 制服丝袜亚洲精品中文字幕| 日韩精品一区二区三区在线 | 国产精品日韩精品欧美在线| 中文字幕亚洲一区二区av在线 | 一区二区高清免费观看影视大全| 亚洲福利国产精品| 精品亚洲国产成人av制服丝袜| 国模套图日韩精品一区二区 | 26uuu久久天堂性欧美| 久久精品夜色噜噜亚洲a∨| 国产精品视频在线看| 一区av在线播放| 九九九久久久精品| 不卡一区二区三区四区| 欧美军同video69gay| 久久综合五月天婷婷伊人| 中文字幕中文在线不卡住| 日韩一区欧美二区| 国产.精品.日韩.另类.中文.在线.播放| 91猫先生在线| 日韩欧美精品在线| 亚洲女同ⅹxx女同tv| 麻豆成人久久精品二区三区红| 懂色av一区二区夜夜嗨| 欧美日韩极品在线观看一区| 国产日韩欧美综合一区| 亚洲va欧美va人人爽| 成人永久免费视频| 91精品久久久久久久99蜜桃| 亚洲国产精品成人久久综合一区 | 另类小说一区二区三区| 99综合电影在线视频| 欧美一区二区三区公司| 国产精品福利影院| 午夜精品在线看| av亚洲精华国产精华| 日韩一区二区三区免费观看| 亚洲女人****多毛耸耸8| 国产成人自拍网| 日韩欧美一级特黄在线播放| 一区二区三区高清| 成人黄色软件下载| 久久久精品中文字幕麻豆发布| 日韩在线观看一区二区| 91蝌蚪porny成人天涯| 国产亚洲一区字幕| 麻豆免费看一区二区三区| 精品视频123区在线观看| 中文字幕一区在线观看视频| 韩国三级中文字幕hd久久精品| 在线播放视频一区| 亚洲自拍偷拍网站| 97se亚洲国产综合在线| 国产婷婷色一区二区三区| 久久av中文字幕片| 制服丝袜激情欧洲亚洲| 亚洲成av人片在线观看无码| 97se亚洲国产综合自在线观| 欧美激情一区在线观看| 国产成人在线观看免费网站| 欧美精品一区二区三区在线播放 | 亚洲一区二区黄色| 色偷偷久久人人79超碰人人澡| 欧美国产精品专区| 国产ts人妖一区二区| 久久久777精品电影网影网| 经典三级视频一区| 久久奇米777| 国产一区在线看| 国产亚洲女人久久久久毛片| 国内成人精品2018免费看| 久久综合给合久久狠狠狠97色69| 精品一区二区三区在线播放视频| 日韩欧美中文字幕制服| 激情亚洲综合在线| wwwwww.欧美系列| 国产精品亚洲一区二区三区妖精| 久久综合视频网| 粉嫩aⅴ一区二区三区四区 | 国内成人免费视频| 国产丝袜欧美中文另类| 成人精品鲁一区一区二区| 国产精品毛片a∨一区二区三区| 99久久久无码国产精品| 一区二区三区在线看| 欧美日韩午夜影院| 毛片av一区二区| 国产欧美日韩综合精品一区二区| 成人午夜又粗又硬又大| 亚洲精品综合在线| 精品视频999| 国产综合一区二区| 国产精品天天看| 色999日韩国产欧美一区二区| 午夜精品久久久| 日韩美女一区二区三区| 粉嫩av亚洲一区二区图片| 亚洲精品成人在线| 日韩欧美国产三级电影视频| 成人手机在线视频| 午夜不卡av在线| 久久精品视频在线免费观看| 一本久久a久久精品亚洲|