Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/AddressHistory.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.6 - (show annotations) (download) (as text)
Thu Nov 27 13:04:17 2003 UTC (20 years, 4 months ago) by yoffy
Branch: MAIN
Changes since 1.5: +18 -14 lines
File MIME type: text/x-pascal
・コンストラクタやデストラクタといった細かいところの調整。

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

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26