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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
{$ifdef BIN_IMPORT_}
var DS: PDataSource;
SS: PSession;
QR1: PQuery;
var
OneContact:boolean;
flags:integer;
timestamp:LongWord;
Msg:string;
function FindUIDinDB(too:string):string;
var QR2:PQuery;
begin
QR2:= NewQuery( SS );
QR2.Text := 'select to, UID from ChatHistory WHERE to='+too;
QR2.Open;
QR2.First;
result:=QR2.FieldByNameAsStr['UID'];
QR2.Free;
end;
{$else}
begin
DoUnMapFile;
OneContact:=(DContact.hContact<>0) and (DContact.hContact<>INVALID_HANDLE_VALUE);
try
DS := NewDataSource( 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;' +
'Data Source='+FileName+
';Mode=Share Deny None;' +
'Extended Properties="";' +
'Locale Identifier=1033;' +
'Persist Security Info=False;');
SS := NewSession( DS );
QR1 := NewQuery( SS );
QR1.Text:= 'SELECT Messages.from, date, to, type, subType, subject FROM Messages';
QR1.Open;
if (QR1.ColCount=7) then
begin
DoMessage(ITXT_THREAD_START,0,0);
QR1.First;
DoMessage(ITXT_THREAD_MAXPROGRESS,0,QR1.RowCount);
While not QR1.EOF do
begin
try
if (QR1.SFieldByName[ 'type' ]='Text') and
(QR1.SFieldByName[ 'subType' ]='IM') then
begin
UIDStr:=FindUIDinDB(QR1.FieldByNameAsStr[ 'to' ]);
if not OneContact then
begin
DContact.ContactUID:=UIDStr;
TryDetermContact(DContact);
end;
if (DContact.hContact<>0) and (DContact.hContact<>INVALID_HANDLE_VALUE) then
begin
if QR1.SField[ 1 ]='' then flags:=DBEF_SENT or DBEF_READ
else flags:=DBEF_READ;
if IsMirandaUnicode then flags:=flags or DBEF_UTF;
timestamp:=DateTimeToTimeStamp(QR1.DFieldByName['date']-693594);
Msg:=QR1.SFieldByName['subject'];
if IsMirandaUnicode then
begin
tempstr:=ANSIToUTF8(PAnsiChar(Msg),tempstr,cp);
Msg:=tempstr;
FreeMem(tempstr);
end;
AddMsgToDB(DContact.hContact,flags,timestamp,Msg,AddedMessages,Duplicates);
end;
end;
except
ShowException(ExceptObject,ExceptAddr)
end;
QR1.Next;
DoMessage(ITXT_THREAD_PROGRESS,QR1.CurIndex,0);
end; //for
end
else
begin
s:=WideFormat(TranslateWideString('Its not %s file'),['ICQ6 mdb']);
DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0);
end;
finally
DS.Free;
DS := nil;
SS := nil;
QR1 := nil;
end;
end;
{$endif}
|