summaryrefslogtreecommitdiff
path: root/plugins/ImportTXT/BmContactIP.inc
blob: e4fe59165eb3df4940dfe0e8b2f6cc9c064c2742 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
{$ifdef BIN_IMPORT_}

{$else}
begin
   pt:=integer(pFileText);
   if FileLen>=10 then
   if (PWORD(pt)^=$4248) and (PDWORD(pt+2)^=$FFFFFFFF) then
    begin
    //ñìîòðèì åñòü ëè ó íàñ êîíòàêò íàçíà÷åíèÿ
    if (DContact.hContact=0) or (DContact.hContact=INVALID_HANDLE_VALUE) then
     if (fContact.hContact<>0) and (fContact.hContact<>INVALID_HANDLE_VALUE) then
         DContact:=fContact;
    if (DContact.hContact<>0) and (DContact.hContact<>INVALID_HANDLE_VALUE) then
     begin
      proto:=GetContactProto(DContact.hContact);
      DoMessage(ITXT_THREAD_DEST_CONTACT,DContact.hContact,0);
      DoMessage(ITXT_THREAD_START,0,0);
      fsz:=PDWORD(pt+6)^; //ðàçìåð äàííûõ â ôàéëå
      DoMessage(ITXT_THREAD_MAXPROGRESS,0,fsz); 
      inc(pt,10);
      i:=0;
      while i<fsz do
       begin
        with dbei do
         begin
          cbSize:=PInteger(pt+i)^;
          szModule:=PChar(proto);
          timestamp:=PDWORD(pt+i+$08)^;
          flags:=PDWORD(pt+i+$0C)^;
          eventtype:=PDWORD(pt+i+$10)^;
          cbBlob:=PDWORD(pt+i+$14)^;
          pBlob:=PBYTE(pt+i+cbSize);
         end;
        if not IsDuplicateEvent(DContact.hContact,dbei) then
         if pluginLink^.CallService(MS_DB_EVENT_ADD, wParam(DContact.hContact), lParam(@dbei))<>0 then Inc(AddedMessages)
                                                                                      else begin
                                                          s:= 'Error adding message to DB';
                                                          DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0);  break; end

                                          else Inc(Duplicates);
        inc(i,dbei.cbSize+dbei.cbBlob);
        DoMessage(ITXT_THREAD_PROGRESS,i,0);
       end;
     end
                                                                            else
     begin
      s:=TranslateWideString('Can''t determine destination contact');
      DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0);
     end;
    end
        else
    begin
     s:=WideFormat(TranslateWideString('Its not %s file'),['mContact']);
     DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0);
    end
                  else //file len
end;
{$endif}