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

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

?? icqdb.pas

?? 本程序是轉載的
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
begin
  Result := ReadStr(FDHandle, ReadInt(FDHandle, 2));
end;

{Global variables in ParseDatEntry procedure}
var
  FNickName: String;
  FFirstName: String;
  FLastName: String;
  FEmail: String;
  FLastUpdate: String;
  FAge, FGender: Byte;
  FUIN: LongWord;
  FMsg, FMsg2, FMsg3: String;
  FFlag: LongWord;
  FSeparator: Word;
  FSubType: Word;
  FTStamp: LongWord;

  FPassword: String;
  FCryptIV: LongWord;

procedure ReadProperty;
var
  Len: Word;
  AName: String;
  Num, PropNum, i, n: LongWord;
  CType: Byte;
  Cmd: Byte;
begin
  Len := ReadInt(FDHandle, 2);
  AName := ReadStr(FDHandle, Len);
  Cmd := ReadInt(FDHandle, 1);
  case Cmd of
    $64: {Char}
      Read64h;
    $65: {Byte}
      if AName = 'Age' then
        FAge := Read65h
      else if AName = 'Gender' then
        FGender := Read65h
      else
        Read65h;
    $66: {Word}
      Read66h;
    $67: {Integer}
      Read67h;
    $68: {DWord}
      if AName = '99BCryptIV' then
        FCryptIV := Read68h
      else
        Read68h;
    $69: {LongInt}
      if AName = 'UIN' then
        FUIN := Read69h
      else
        Read69h;
    $6b: {LNTS}
      if AName = 'NickName' then
        FNickName := Read6bh
      else if AName = 'FirstName' then
        FFirstName := Read6bh
      else if AName = 'LastName' then
        FLastName := Read6bh
      else if AName = 'PrimaryEmail' then
        FEmail := Read6bh
      else if AName = 'Password' then begin
        if FPassword = '' then                  //For some unknown reasons, password is stored many times with null value
          FPassword := Read6bh
        else
          Read6bh
      end else
        Read6bh;
    $6d: {Sublist}
    begin
      Num := ReadInt(FDHandle, 4);
      CType := ReadInt(FDHandle, 1);
      if Num > 0 then
        for i := 0 to Num - 1 do
          case CType of
            $6b:
              Skip(FDHandle, ReadInt(FDHandle, 2));
            $6e:
            begin
              Skip(FDHandle, 2);                //Separator value
              PropNum := ReadInt(FDHandle, 4);  //Number of properties
              if PropNum > 0 then
                for n := 0 to PropNum - 1 do
                  ReadProperty;                 //Parse each property (call recursively)
            end;
          end;
    end;
    $6f: {DWORD (length) + BYTE array}
      Skip(FDHandle, ReadInt(FDHandle, 4));
  end;
end;

procedure ReadPropertyBlock;
var
  Num, i: LongWord;
begin
  Skip(FDHandle, 2);                            //Separator value
  Num := ReadInt(FDHandle, 4);                  //Number of user properties
  if Num > 0 then
    for i := 0 to Num - 1 do
      ReadProperty;
end;

procedure ReadWavEntry;
begin
  Skip(FDHandle, 2);                            //Separator value
  Skip(FDHandle, 4);                            //User event for which Wav will be played
  Skip(FDHandle, 4);                            //0: play default WAV, 1: play the user-specified WAV
  ReadLNTS(FDHandle);                           //Full path and file name of WAV
end;

procedure ReadWavBlock;
var
  Num, i: LongWord;
begin
  Num := ReadInt(FDHandle, 4);            //Number of user event WAV entries
  if Num > 0 then
    for i := 0 to Num - 1 do
      ReadWavEntry;
  Skip(FDHandle, 2);                      //Separator value
end;

var
  Dat: TDatRec;
  Num: LongWord;
  i: LongWord;
  FURL, FDesc: String;
begin
  if FDHandle = INVALID_HANDLE_VALUE then Exit;
  if ReadBuf(FDHandle, SizeOf(Dat), Dat) <> SizeOf(Dat) then Exit;
  case Dat.Command of
    $e0, $a0: {Short Message & URL Format (ICQ 99a-2002a)}
    begin
      Skip(FDHandle, 2);                        //Separator
      Skip(FDHandle, 4);                        //Filing flags
      FSubType := ReadInt(FDHandle, 2);         //Entry sub type: 1: Message; 4: URL; 19: Contacts
      if (FSubType <> 1) and (FSubType <> 4) then
        Exit;
      FUIN := ReadInt(FDHandle, 4);             //UIN of sender/receiver
      FMsg := ReadStr(FDHandle, ReadInt(FDHandle, 2));
      Skip(FDHandle, 4);                        //Status of receiving user
      FFlag := ReadInt(FDHandle, 4);            //Sent or received: 0: Received, 1: Sent
      Skip(FDHandle, 2);                        //Separator value
      FTStamp := ReadInt(FDHandle, 4);          //Timestamp, time of last update
      FLastUpdate := TimeStamp2Str(FTStamp);
      if FSubType = 1 then begin
        if Assigned(OnMessageFound) then
          FOnMessage(Self, FUIN, FFlag = 0, FMsg, FLastUpdate, FTStamp);
      end else
      if FSubType = 4 then begin
        FDesc := Copy(FMsg, 0, Pos(#$fe, FMsg) - 1);
        FURL := Copy(FMsg, Pos(#$fe, FMsg) + 1, Length(FMsg) - Pos(#$fe, FMsg));
        if Assigned(OnUrlFound) then
          FOnUrl(Self, FUIN, FFlag = 0, FDesc, FURL, FLastUpdate, FTStamp);
      end;
    end;
    $e4: {My details}
    begin
      if Dat.Number <> 1005 then Exit;
      FNickName := ''; FFirstName := ''; FLastName := '';  FEmail := '';
      FPassword := ''; FAge := 0; FGender := 0; FUIN := 0;
      FSeparator := ReadInt(FDHandle, 2);       //Separator
      if ReadStr(FDHandle, 4) <> 'RESU' then    //Label   = 55534552h ('USER')
        Exit;
      if ReadInt(FDHandle, 4) <> 6 then Exit;   //User entry status: 6 = "My Details"
      Skip(FDHandle, 4);                        //0 (Unknown, most likely an unused group entry)
      Skip(FDHandle, 2);                        //Separator value
      {Some modifications in ICQ2000x}
      if (FDbVersion = DB_2000a) or (FDbVersion = DB_2000b) then
        ReadWavBlock;
      {Some modifications in ICQ2002a}
      if (FSeparator >= 533) and (FDbVersion = DB_2001a) then begin
        Skip(FDHandle, 4);                      //0 (Unknown, if this can be longer than a long it will most likely crash the importer
        Skip(FDHandle, 2);                      //Separator value
      end;
      Num := ReadInt(FDHandle, 4);              //Number of property blocks
      if Num > 0 then
        for i := 0 to Num - 1 do
          ReadPropertyBlock;
      Skip(FDHandle, 2);                        //Separator value
      FTStamp := ReadInt(FDHandle, 4);          //Timestamp, time of last update
      FLastUpdate := TimeStamp2Str(FTStamp);
      FPassword := Decrypt99bPassword(FUIN, FCryptIV, FPassword);
      if Assigned(OnSelfInfoFound) then
        FOnSelfInfo(Self, FUIN, FNickName, FFirstName, FLastName, FEmail, FPassword, FAge, FGender, FLastUpdate, FTStamp);
    end;
    $e5: {Contact entry}
    begin
      FNickName := ''; FFirstName := ''; FLastName := '';  FEmail := '';
      FAge := 0; FGender := 0; FUIN := 0;
      FSeparator := ReadInt(FDHandle, 2);       //Separator
      if ReadStr(FDHandle, 4) <> 'RESU' then    //Label   = 55534552h ('USER')
        Exit;
      ReadInt(FDHandle, 4);                     //User entry status
      ReadInt(FDHandle, 4);                     //GroupID of contact group containing user
      Skip(FDHandle, 2);                        //Separator value
      {Some modifications in ICQ2000x}
      if (FDbVersion = DB_2000a) or (FDbVersion = DB_2000b) then
        ReadWavBlock;
      {Some modifications in ICQ2002a}
      if (FSeparator >= 533) and (FDbVersion = DB_2001a) then begin
        Skip(FDHandle, 4);                      //Unknown, 0
        Skip(FDHandle, 2);                      //Separator value
      end;
      Num := ReadInt(FDHandle, 4);              //Number of property blocks
      if Num > 0 then
        for i := 0 to Num - 1 do
          ReadPropertyBlock;
      Skip(FDHandle, 2);                        //Separator value
      FTStamp := ReadInt(FDHandle, 4);          //Timestamp, time of last update
      FLastUpdate := TimeStamp2Str(FTStamp);
      if Assigned(OnContactFound) then
        FOnContact(Self, FUIN, FNickName, FFirstName, FLastName, FEmail, FAge, FGender, FLastUpdate, FTStamp);
    end;
    $50: {Long Message Format (ICQ 99a-2002a)}
    begin
      Skip(FDHandle, 2);                        //Separator
      Skip(FDHandle, 4);                        //Filing flags
      Skip(FDHandle, 2);                        //Entry sub type
      FUIN := ReadInt(FDHandle, 4);             //UIN of sender/receiver
      FMsg := ReadLNTS(FDHandle);               //ANSI text
      Skip(FDHandle, 4);                        //Status of receiving user
      FFlag := ReadInt(FDHandle, 4);            //Sent or received: 0: Received, 1: Sent
      Skip(FDHandle, 2);                        //Separator value
      FTStamp := ReadInt(FDHandle, 4);          //Timestamp, time of last update
      FLastUpdate := TimeStamp2Str(FTStamp);
      Skip(FDHandle, 19);                       //Zeroes
      FMsg2 := ReadLNTS(FDHandle);              //Rich Text
      FMsg3 := ReadLNTS(FDHandle);              //UTF-8 Text
      if Assigned(OnAdvMessageFound) then
        FOnAdvMessage(Self, FUIN, FFlag = 0, FMsg, FMsg2, FMsg3, FLastUpdate, FTStamp);
    end;
  end;
end;

procedure TICQDb.ParseMirandaDatFile;
{Global variables in ParseMirandaDatFile procedure}
var
  FNickName: String;
  FFirstName: String;
  FLastName: String;
  FEmail: String;
  FLastUpdate: String;
  FAge, FGender: Byte;
  FUIN: LongWord;
  FMsg: String;
  FPassword: String;


function GetModuleName(Ofs: LongWord): String;
type
  TDBModuleName = record
    Signature: LongWord;
    ofsNext: LongWord;
    cbName: Byte;
  end;
var
  FMod: TDbModuleName;
  FCurrOff: LongWord;
begin
  Result := '';
  FCurrOff := GetPos(FDHandle);
  if not Seek(FDHandle, Ofs) then Exit;
  if ReadBuf(FDHandle, SizeOf(FMod), FMod) <> SizeOf(FMod) then Exit;
  Result := ReadStr(FDHandle, FMod.cbName);
  Seek(FDHandle, FCurrOff);
end;

function ReadContactSettings(Ofs: LongWord): Boolean;
function ReadByte: Byte;
begin
  Result := ReadInt(FDHandle, 1);
end;

function ReadWord: Word;
begin
  Result := ReadInt(FDHandle, 2);
end;

function ReadDWord: LongWord;
begin
  Result := ReadInt(FDHandle, 4);
end;

function ReadASCIIZ: String;
begin
  Result := ReadStr(FDHandle, ReadWord);
end;

procedure ReadParams(Len: LongWord);
var
  FName: String;
  __pos: LongWord;
begin
  __pos := GetPos(FDHandle);
  while True do begin
    FName := ReadStr(FDHandle, ReadByte);
    if FName = '' then Break;                   //We acheived end of property list
    case ReadByte of
      DBVT_DELETED: Exit;                       //This setting just got deleted, no other values are valid
      DBVT_BYTE:
        if FName = 'Gender' then begin
          FGender := ReadByte;
          if Chr(FGender) = 'M' then
            FGender := GEN_MALE
          else if Chr(FGender) = 'F' then
            FGender := GEN_FEMALE
          else
            FGender := 0;
        end else
          ReadByte;
      DBVT_WORD:
        if FName = 'age' then
          FAge := ReadWord
        else
          ReadWord;
      DBVT_DWORD:
        if FName = 'UIN' then
          FUIN := ReadDWord
        else
          ReadDWord;
      DBVT_ASCIIZ:
        if FName = 'Nick' then
          FNickName :=  ReadASCIIZ
        else if FName = 'FirstName' then
          FFirstName := ReadASCIIZ
        else if FName = 'LastName' then
          FLastName := ReadASCIIZ
        else if FName = 'e-mail' then
          FEmail := ReadASCIIZ
        else if FName = 'Password' then
          FPassword := DecryptMirandaPassword(ReadASCIIZ)
        else
          ReadASCIIZ;
      DBVT_BLOB:
        Skip(FDHandle, ReadDWord);
      DBVTF_VARIABLELENGTH:
        Exit;
    else
      Exit;
    end;
    if GetPos(FDHandle) >= __pos + Len then Break;
  end;
end;
var
  FDbset: TDBContactSettings;
  FModName: String;
begin
  FNickName := ''; FFirstName := ''; FLastName := '';
  FEmail := ''; FLastUpdate := ''; FAge := 0;
  FGender := 0; FUIN := 0; FMsg := ''; Result := False;
  if not Seek(FDHandle, Ofs) then Exit;
  while True do begin
    if ReadBuf(FDHandle, SizeOf(FDbSet), FDbSet) <> SizeOf(FDbSet) then Break;
    FModName := GetModuleName(FDbSet.ofsModuleName);
    //if FModName = '' then                       //Do not parse any module settings
      ReadParams(FDbSet.cbBlob);                //Parse contact params
    if FDbSet.ofsNext = 0 then Break;
    if not Seek(FDHandle, FDbSet.ofsNext) then Break;
  end;
  Result := True;
end;

procedure ReadEvents(Ofs: LongWord);
var
  FDbEvent: TDbEvent;
  FDesc: String;
  FURL: String;
begin
  if not Seek(FDHandle, Ofs) then Exit;
  while True do begin
    if ReadBuf(FDHandle, SizeOf(TDbEvent), FDbEvent) <> SizeOf(TDbEvent) then Break;
    if FDbEvent.Signature <> DBEVENT_SIGNATURE then Break;
    //if GetModuleName(FDbEvent.ofsModuleName) = '' then  //Parse only miranda's events
      if (FDbEvent.eventType = EVENTTYPE_MESSAGE) or
         (FDbEvent.eventType = EVENTTYPE_URL) then
      begin
        FMsg := ReadStr(FDHandle, FDbEvent.cbBlob);
        if FDbEvent.eventType = EVENTTYPE_MESSAGE then begin
          if Assigned(OnMessageFound) then
            FOnMessage(Self, FUIN, FDbEvent.flags and DBEF_SENT <> DBEF_SENT, FMsg, TimeStamp2Str(FDbEvent.Timestamp), FDbEvent.Timestamp);
        end else begin
          FDesc := Copy(FMsg, 0, Pos(#$fe, FMsg) - 1);
          FURL := Copy(FMsg, Pos(#$fe, FMsg) + 1, Length(FMsg) - Pos(#$fe, FMsg));
          if Assigned(OnUrlFound) then
            FOnUrl(Self, FUIN, FDbEvent.flags and DBEF_SENT <> DBEF_SENT, FDesc, FURL, TimeStamp2Str(FDbEvent.Timestamp), FDbEvent.Timestamp);
        end;
      end;
    if FDbEvent.ofsNext = 0 then Break;
    if not Seek(FDHandle, FDbEvent.ofsNext) then Break;
  end;
end;

var
  FContact: TMirandaContact;
  i: Word;
begin
  if Assigned(OnParsingStarted) then
    FOnParsingStarted(Self);
  if Assigned(OnProgress) then
    FOnProgress(Self, 0);
  i := 1;
  if not Seek(FDHandle, FMirandaHdr.ofsFirstContact) then Exit;
  if FMirandaHdr.contactCount > 0 then
    while True do begin
      if ReadBuf(FDHandle, SizeOf(FContact), FContact) <> SizeOf(FContact) then Break;
      if ReadContactSettings(FContact.ofsFirstSettings) then
        if Assigned(OnContactFound) then                  //It's called here because of same property reader for the self info
          FOnContact(Self, FUIN, FNickName, FFirstName, FLastName, FEmail, FAge, FGender, '', 0);
      ReadEvents(FContact.ofsFirstEvent);
      if FContact.ofsNext = 0 then Break;
      if not Seek(FDhandle, FContact.ofsNext) then Break;
      if Assigned(OnProgress) then
        FOnProgress(Self, Round((i / FMirandaHdr.contactCount) * 100));
      Inc(i);
    end;
  if (FMirandaHdr.ofsUser = 0) or (not Seek(FDHandle, FMirandaHdr.ofsUser)) then Exit;
  if ReadBuf(FDHandle, SizeOf(FContact), FContact) <> SizeOf(FContact) then Exit;
  FPassword := '';
  if ReadContactSettings(FContact.ofsFirstSettings) then
    if Assigned(OnSelfInfoFound) then
      FOnSelfInfo(Self, FUIN, FNickName, FFirstName, FLastName, FEmail, FPassword, FAge, FGender, '', 0);
  CloseDat;     
  if Assigned(OnProgress) then
    FOnProgress(Self, 100);
  if Assigned(OnParsingFinished) then
    FOnParsingFinished(Self);
end;

procedure Register;
begin
  RegisterComponents('Standard', [TICQDb]);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91污在线观看| 欧美乱妇15p| 欧美巨大另类极品videosbest | 欧美精品一区二区三区在线| 极品少妇xxxx精品少妇偷拍| 亚洲女性喷水在线观看一区| 麻豆精品视频在线观看| 亚洲精品一线二线三线无人区| 欧美日韩一区精品| 国产精品综合一区二区| 亚洲欧洲日产国产综合网| 欧美人牲a欧美精品| 国产精品亚洲视频| 国产宾馆实践打屁股91| 亚洲线精品一区二区三区| 欧美一区二区三区成人| www.日本不卡| 久久99国产精品免费| 久草这里只有精品视频| 国产aⅴ综合色| 91美女福利视频| 欧美揉bbbbb揉bbbbb| 日韩一区二区三区免费看| 色婷婷久久久综合中文字幕| 狠狠色丁香久久婷婷综合丁香| 亚洲一区二区三区中文字幕| 久久精品夜夜夜夜久久| 欧美日韩夫妻久久| 欧美成人伊人久久综合网| 欧美精品vⅰdeose4hd| 日韩精品在线看片z| 欧美日本一区二区在线观看| 精品黑人一区二区三区久久 | 亚洲美女屁股眼交| 日韩高清一区在线| 亚洲女人小视频在线观看| 午夜视频久久久久久| 亚洲一区二区三区中文字幕在线| 美女一区二区久久| 99久久久久久| 91色porny在线视频| 日韩一区二区影院| 国产精品每日更新在线播放网址| 欧美不卡123| 色综合色狠狠天天综合色| 欧美熟乱第一页| 玖玖九九国产精品| 亚洲综合在线电影| 国产丝袜美腿一区二区三区| 亚洲欧洲三级电影| 国产主播一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃| 欧美一级黄色大片| 亚洲欧美另类图片小说| 精品一区二区久久久| 欧美性猛交xxxx黑人交| 中文字幕一区日韩精品欧美| 精品一区二区成人精品| 欧美日韩精品系列| 亚洲伦在线观看| 亚洲九九爱视频| 亚洲黄一区二区三区| 国产成人午夜片在线观看高清观看| 国内外成人在线视频| 欧美视频一区在线| 一区二区三区欧美久久| av电影天堂一区二区在线观看| 精品欧美一区二区久久| 免费欧美日韩国产三级电影| 久88久久88久久久| 欧美精品色一区二区三区| 国产精品理论片| 亚洲成人一区二区在线观看| 久久99国产乱子伦精品免费| 日韩网站在线看片你懂的| 五月激情六月综合| 欧美日本一道本| 亚洲无线码一区二区三区| 欧美性猛交xxxx黑人交| 性久久久久久久久| 337p亚洲精品色噜噜噜| 久久久久97国产精华液好用吗| ...xxx性欧美| 99国产精品99久久久久久| 中文字幕亚洲不卡| 91在线免费视频观看| 亚洲三级理论片| 国产一区二区视频在线播放| 色久综合一二码| 久久久高清一区二区三区| 国产麻豆精品在线观看| 国产欧美日韩视频一区二区| 舔着乳尖日韩一区| 欧美一区二区人人喊爽| 久久精品国产99久久6| 久久久久久黄色| 91捆绑美女网站| 亚洲一二三四在线| 欧美成人在线直播| www.66久久| 午夜精品久久久久久久99水蜜桃| 日韩一区二区视频在线观看| 国产精品一区二区视频| 亚洲色图视频网| 日韩欧美一级二级| 国产成人综合亚洲91猫咪| 亚洲精品v日韩精品| 日韩午夜精品电影| caoporn国产精品| 日本不卡在线视频| 中文字幕一区二区三中文字幕| 精品视频资源站| 国产激情偷乱视频一区二区三区| 亚洲欧美激情插 | 三级一区在线视频先锋 | 偷拍日韩校园综合在线| ww久久中文字幕| 蜜桃av一区二区在线观看| 国产精品视频看| 8v天堂国产在线一区二区| 丁香网亚洲国际| 视频一区二区不卡| 亚洲人亚洲人成电影网站色| 日韩欧美高清一区| 在线视频国内自拍亚洲视频| 一级中文字幕一区二区| 精品国产91乱码一区二区三区| 日本高清成人免费播放| 国产精品一二三四| 日韩av电影一区| 亚洲图片激情小说| 久久精品亚洲一区二区三区浴池| 欧美日韩在线电影| 91首页免费视频| 国产成人精品免费看| 久久电影网电视剧免费观看| 亚洲一区二区三区不卡国产欧美| 中日韩免费视频中文字幕| 日韩免费高清av| 91精品国产91久久久久久一区二区 | 老汉av免费一区二区三区| 亚洲欧美成aⅴ人在线观看| 国产精品美女一区二区在线观看| 日韩精品中文字幕在线一区| 欧美日韩成人综合| 欧美自拍丝袜亚洲| 91女神在线视频| www.av亚洲| 91在线观看下载| 99riav久久精品riav| 99久久精品免费精品国产| 国产成人精品亚洲日本在线桃色| 加勒比av一区二区| 国产精品一区二区在线看| 国产激情一区二区三区| 国产成人午夜精品影院观看视频| 国产麻豆精品95视频| 久久国产成人午夜av影院| 国产一区二区三区香蕉| 国产大陆亚洲精品国产| 国产91精品在线观看| 成人免费看片app下载| 午夜精品福利一区二区三区av | 黄一区二区三区| 精品亚洲国内自在自线福利| 国产精品国产三级国产| 全部av―极品视觉盛宴亚洲| 亚洲高清免费观看高清完整版在线观看| 国产精品精品国产色婷婷| 亚洲欧美日韩国产综合| 亚洲一区影音先锋| 日韩高清一区二区| 国产一区二区三区日韩| 岛国一区二区在线观看| 色综合久久中文综合久久牛| 欧美日韩一区在线| 精品国精品国产尤物美女| 国产精品网站一区| 一区二区不卡在线播放| 日本不卡一区二区| 国产成人啪免费观看软件| 91无套直看片红桃| 日韩午夜激情免费电影| 国产精品萝li| 日韩成人免费在线| 国产成人自拍在线| 欧美性生活久久| 久久综合色播五月| 亚洲另类一区二区| 久久草av在线| 91一区在线观看| 欧美电影免费观看高清完整版| 国产精品免费网站在线观看| 亚洲国产精品一区二区www| 国产自产2019最新不卡| 91久久精品一区二区三| 久久综合五月天婷婷伊人| 亚洲自拍偷拍综合| 国产乱国产乱300精品| 欧美日韩国产中文|