-
Notifications
You must be signed in to change notification settings - Fork 0
/
MessageData.cpp
62 lines (58 loc) · 1.96 KB
/
MessageData.cpp
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
//---------------------------------------------------------------------------
#pragma hdrstop
#include "MessageData.h"
#include <memory>
//---------------------------------------------------------------------------
#pragma package(smart_init)
__fastcall MessageData::MessageData() {
Items = new TList;
}
__fastcall MessageData::~MessageData() {
}
void __fastcall MessageData::Add(UnicodeString message, UnicodeString IP, int type) {
MessageItem *mi;
mi = new MessageItem;
mi->message = message;
mi->IP = IP;
mi->type = type;
mi->time = Now().DateTimeString();
Items->Add(mi);
}
MessageItem* __fastcall MessageData::Get(int num) {
return (MessageItem*)Items->Items[num];
}
UnicodeString __fastcall MessageData::GetMessage(int num) {
return ((MessageItem*)Items->Items[num])->message;
}
void __fastcall MessageData::SaveToFile(UnicodeString fileName) {
std::unique_ptr<TStreamWriter> sw(new TStreamWriter(fileName, false));
for(int i = 0; i < Items->Count; i++) {
MessageItem *item = Get(i);
item->message = StringReplace(item->message,"\t"," ",TReplaceFlags()<<rfReplaceAll);
item->message = StringReplace(item->message,"\r\n","\t",TReplaceFlags()<<rfReplaceAll);
sw->WriteLine(item->message);
sw->WriteLine(item->IP);
sw->WriteLine(item->type);
sw->WriteLine(item->time);
}
sw->Close();
}
void __fastcall MessageData::LoadFromFile(UnicodeString fileName) {
std::unique_ptr<TStreamReader> sr(new TStreamReader(fileName));
while(sr->EndOfStream == false) {
MessageItem *item = new MessageItem;
item->message = sr->ReadLine();
item->message = StringReplace(item->message,"\t","\r\n",TReplaceFlags()<<rfReplaceAll);
item->IP = sr->ReadLine();
item->type = StrToInt(sr->ReadLine());
item->time = sr->ReadLine();
Items->Add(item);
}
sr->Close();
}
void __fastcall MessageData::Clear() {
for(int i = 0; i < Items->Count; i++) {
delete (MessageItem*)Items->Items[i];
}
Items->Clear();
}