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
92
93
94
95
96
97
98
99
100
101
102
103
|
{$IFDEF BIN_IMPORT_}
var
QR1: TADOQuery;
var
OneContact: boolean;
flags: integer;
timestamp: LongWord;
Msg: AnsiString;
ADOConnection:TADOConnection;
function FindUIDinDB(too: string): string;
var
QR2: TADOQuery;
begin
QR2 := TADOQuery.Create(nil);
QR2.Connection := ADOConnection;
QR2.SQL.Text := 'select to, UID from ChatHistory WHERE to=' + too;
QR2.Open;
QR2.First;
result := QR2.FieldByName('UID').AsString;
QR2.Close;
QR2.Free;
end;
{$ELSE}
begin
DoUnMapFile;
OneContact := (DContact.hContact <> 0) and (DContact.hContact <> INVALID_HANDLE_VALUE);
try
// coInitialize(nil);
ADOConnection:=TADOConnection.Create(nil);
ADOConnection.Connected:=false;
ADOConnection.LoginPrompt:=false;
ADOConnection.Provider:='Microsoft.Jet.OLEDB.4.0';
ADOConnection.ConnectionString :=
'User ID=Admin;' +
'Data Source=' + FileName +
';Mode=Share Deny None;' +
'Extended Properties="";' +
'Locale Identifier=1033;' +
'Persist Security Info=False;';
ADOConnection.Connected:=true;
QR1 := TADOQuery.Create(nil);
QR1.Connection := ADOConnection;
QR1.SQL.Text := 'SELECT Messages.from, date, to, type, subType, subject FROM Messages';
QR1.Open;
if (QR1.FieldCount = 7) then
begin
DoMessage(ITXT_THREAD_START, 0, 0);
QR1.First;
DoMessage(ITXT_THREAD_MAXPROGRESS, 0, QR1.RecordCount);
While not QR1.EOF do
begin
try
if (QR1.FieldByName('type').AsString = 'Text') and
(QR1.FieldByName('subType').AsString = 'IM') then
begin
UIDStr := FindUIDinDB(QR1.FieldByName('to').AsString);
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.Fields[1].AsString = '' then
flags := DBEF_READ or DBEF_UTF or DBEF_SENT
else
flags := DBEF_READ or DBEF_UTF;
timestamp := DateTimeToTimeStamp(QR1.FieldByName('date').AsDateTime - 693594);
Msg := QR1.FieldByName('subject').AsString;
tempstr := ANSIToUTF8(PAnsiChar(Msg), tempstr, cp);
Msg := tempstr;
FreeMem(tempstr);
AddMsgToDB(DContact.hContact, flags, timestamp, Msg, AddedMessages, Duplicates);
end;
end;
except
ShowException(ExceptObject, ExceptAddr)
end;
QR1.Next;
DoMessage(ITXT_THREAD_PROGRESS, QR1.RecNo, 0);
end; // for
end
else
begin
s := WideFormat(TranslateWideString('Its not %s file'), ['ICQ6 mdb']);
DoMessage(ITXT_THREAD_ERROR, wparam(PWideChar(s)), 0);
end;
finally
QR1.Close;
QR1.Free;
ADOConnection.Close;
ADOConnection.Free;
end;
end;
{$ENDIF}
|