OSDN Git Service

何も無いコンストラクタを削ってみた。
[gikonavigoeson/gikonavi.git] / AddressHistory.pas
1 unit AddressHistory;
2
3 interface
4
5 uses
6         SysUtils, Classes, {SAX, SAXHelpers, SAXComps, SAXKW,}
7         GikoSystem, {XMLIntf, XMLDoc}{, HttpApp} GikoXMLDoc, YofUtils;
8
9 type
10         TAddressHistoryDM = class(TDataModule)
11         private
12                 { Private \90é\8c¾ }
13                 FReadCount: Integer;
14
15 //              procedure SAXStartDocument(Sender: TObject);
16 //              procedure SAXEndDocument(Sender: TObject);
17 //              procedure SAXStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString; const Atts: IAttributes);
18 //              procedure SAXEndElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString);
19 //              procedure SAXCharacters(Sender: TObject; const PCh: SAXString);
20         public
21                 { Public \90é\8c¾ }
22                 procedure ReadHistory(sl: TStrings; ReadCount: Integer);
23                 procedure WriteHistory(sl: TStrings; WriteCount: Integer);
24         end;
25
26 var
27         AddressHistoryDM: TAddressHistoryDM;
28
29 implementation
30
31 const
32         ADDRESS_HISTORY_FILE_NAME = 'AddressHistory.xml';
33
34 {$R *.dfm}
35
36 procedure TAddressHistoryDM.ReadHistory(sl: TStrings; ReadCount: Integer);
37 var
38         FileName: string;
39         XMLDoc: IXMLDocument;
40         XMLNode: IXMLNode;
41         HistoryNode: IXMLNode;
42         i: Integer;
43         s: string;
44 begin
45
46         sl.Clear;
47         FReadCount := ReadCount;
48
49         FileName := GikoSys.GetConfigDir + ADDRESS_HISTORY_FILE_NAME;
50
51         if FileExists(FileName) then begin
52                 try
53                         XMLDoc := LoadXMLDocument(FileName);
54       try
55         XMLNode := XMLDoc.DocumentElement;
56
57         if XMLNode.NodeName = 'address' then begin
58           for i := 0 to XMLNode.ChildNodes.Count - 1 do begin
59             HistoryNode := XMLNode.ChildNodes[i];
60             if HistoryNode.NodeName = 'history' then begin
61               if FReadCount >= sl.Count then begin
62                 s := Trim(HistoryNode.Attributes['url']);
63                 if s <> '' then
64                   sl.Add(s);
65                   //sl.Add(HttpDecode(s));
66               end;
67             end;
68           end;
69         end;
70       finally
71         XMLDoc.Free;
72       end;
73                 except
74                 end;
75         end;
76
77 //      AddressSAXHandler.OnStartDocument := SAXStartDocument;
78 //      AddressSAXHandler.OnEndDocument := SAXEndDocument;
79 //      AddressSAXHandler.OnStartElement := SAXStartElement;
80 //      AddressSAXHandler.OnStartElement := SAXStartElement;
81 //      AddressSAXHandler.OnEndElement := SAXEndElement;
82 //      AddressSAXHandler.OnCharacters := SAXCharacters;
83
84 //      AddressSAXReader.Vendor := 'Keith Wood';
85 //      AddressSAXReader.URL := FileName;
86 //      AddressSAXReader.Parse;
87 end;
88
89 procedure TAddressHistoryDM.WriteHistory(sl: TStrings; WriteCount: Integer);
90 var
91         FileName: string;
92         SaveList: TStringList;
93         i: Integer;
94         Count: Integer;
95 {
96         XMLDoc: IXMLDocument;
97         XMLNode: IXMLNode;
98         HistoryNode: IXMLNode;
99 }
100 begin
101 {
102         XMLDoc :=       NewXMLDocument;
103         XMLDoc.Encoding := 'Shift_JIS';
104         XMLDoc.StandAlone := 'yes';
105         XMLNode := XMLDoc.AddChild('address');
106
107         FileName := GikoSys.GetConfigDir + ADDRESS_HISTORY_FILE_NAME;
108         if sl.Count > WriteCount then
109                 Count := WriteCount
110         else
111                 Count := sl.Count;
112
113         for i := 0 to Count - 1 do begin
114                 HistoryNode := XMLNode.AddChild('history');
115                 HistoryNode.Attributes['url'] := Trim(sl[i]);
116         end;
117         XMLDoc.SaveToFile(FileName);
118 }
119         FileName := GikoSys.GetConfigDir + ADDRESS_HISTORY_FILE_NAME;
120         SaveList := TStringList.Create;
121         try
122                 if sl.Count > WriteCount then
123                         Count := WriteCount
124                 else
125                         Count := sl.Count;
126                 SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
127                 SaveList.Add('<address>');
128                 for i := 0 to Count - 1 do begin
129                         SaveList.Add('<history url="' + HtmlEncode(Trim(sl[i])) + '"/>');
130                 end;
131                 SaveList.Add('</address>');
132                 SaveList.SaveToFile(FileName);
133         finally
134                 SaveList.Free;
135         end;
136 end;
137
138 {procedure TAddressHistoryDM.SAXStartDocument(Sender: TObject);
139 begin
140 //
141 end;
142
143 procedure TAddressHistoryDM.SAXEndDocument(Sender: TObject);
144 begin
145 //
146 end;
147
148 procedure TAddressHistoryDM.SAXStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString;
149         const Atts: IAttributes);
150 var
151         s: string;
152 begin
153         if QName = 'history' then begin
154                 if FReadCount >= FList.Count then begin
155                         s := Atts.getValue('url');
156                         if Trim(s) <> '' then
157                                 FList.Add(s);
158                 end;
159         end;
160 end;
161
162 procedure TAddressHistoryDM.SAXEndElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString);
163 begin
164 //
165 end;
166
167 procedure TAddressHistoryDM.SAXCharacters(Sender: TObject; const PCh: SAXString);
168 begin
169 //
170 end;
171 }
172 end.