Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/AddressHistory.pas

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


Revision 1.6 - (hide 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 hi_ 1.1 unit AddressHistory;
2    
3     interface
4    
5     uses
6     SysUtils, Classes, {SAX, SAXHelpers, SAXComps, SAXKW,}
7 yoffy 1.4 GikoSystem, {XMLIntf, XMLDoc}{, HttpApp} GikoXMLDoc, YofUtils;
8 hi_ 1.1
9     type
10     TAddressHistoryDM = class(TDataModule)
11     procedure DataModuleCreate(Sender: TObject);
12     private
13     { Private ?辿?転 }
14 yoffy 1.4 FReadCount: Integer;
15 hi_ 1.1
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 yoffy 1.4
52 hi_ 1.1 sl.Clear;
53     FReadCount := ReadCount;
54    
55     FileName := GikoSys.GetConfigDir + ADDRESS_HISTORY_FILE_NAME;
56    
57     if FileExists(FileName) then begin
58 yoffy 1.2 try
59     XMLDoc := LoadXMLDocument(FileName);
60 yoffy 1.6 try
61     XMLNode := XMLDoc.DocumentElement;
62 yoffy 1.2
63 yoffy 1.6 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 yoffy 1.2 except
80 hi_ 1.1 end;
81     end;
82 yoffy 1.4
83 hi_ 1.1 // 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 yoffy 1.2 SaveList: TStringList;
99 hi_ 1.1 i: Integer;
100     Count: Integer;
101 yoffy 1.2 {
102 hi_ 1.1 XMLDoc: IXMLDocument;
103     XMLNode: IXMLNode;
104     HistoryNode: IXMLNode;
105 yoffy 1.2 }
106 hi_ 1.1 begin
107 yoffy 1.2 {
108 yoffy 1.4 XMLDoc := NewXMLDocument;
109 hi_ 1.1 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 yoffy 1.2 }
125     FileName := GikoSys.GetConfigDir + ADDRESS_HISTORY_FILE_NAME;
126 hi_ 1.1 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 yoffy 1.5 SaveList.Add('<history url="' + HtmlEncode(Trim(sl[i])) + '"/>');
136 hi_ 1.1 end;
137     SaveList.Add('</address>');
138     SaveList.SaveToFile(FileName);
139     finally
140     SaveList.Free;
141 yoffy 1.2 end;
142 hi_ 1.1 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