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