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.5 - (hide annotations) (download) (as text)
Mon Nov 24 07:58:29 2003 UTC (20 years, 4 months ago) by yoffy
Branch: MAIN
Changes since 1.4: +1 -1 lines
File MIME type: text/x-pascal
・お気に入りの保存はやはり URL エンコードじゃないという大失態をやらかしたので修正。
・履歴を強化。

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

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