Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/ReplaceDataModule.pas

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


Revision 1.2 - (show annotations) (download) (as text)
Sun Feb 18 16:01:34 2007 UTC (17 years, 1 month ago) by h677
Branch: MAIN
CVS Tags: v1_59_0_771, v1_59_0_770, v1_59_0_773, v1_59_0_772, v1_59_0_775, v1_59_0_774, v1_59_0_777, v1_59_0_776, v1_56_0_715, v1_59_0_778, v1_63_1_819, v1_57_0_737, v1_62_0_812, v1_57_0_735, v1_57_0_734, v1_57_0_733, v1_57_0_732, v1_57_0_731, v1_57_0_730, v1_57_0_739, v1_57_0_738, v1_59_1_765, v1_60_0_788, v1_60_0_789, v1_58_0_748, v1_58_0_745, v1_60_0_781, v1_60_0_782, v1_58_0_746, v1_60_0_784, v1_60_0_786, v1_60_0_787, v1_56_0_707, v1_59_0_767, v1_56_0_705, v1_56_0_704, v1_56_0_703, v1_56_0_702, v1_56_0_701, v1_56_0_700, v1_59_1_778, v1_57_0_723, v1_59_0_768, v1_59_0_769, v1_57_0_725, v1_57_0_726, v1_57_0_727, v1_57_0_720, v1_57_0_722, v1_57_1_744, v1_57_0_728, v1_57_0_729, v1_57_0_736, v1_58_0_752, v1_58_0_750, v1_58_0_751, v1_58_0_756, v1_58_0_757, v1_58_0_754, v1_58_0_755, v1_58_0_759, v1_57_0_719, v1_57_0_718, v1_56_0_716, v1_56_0_710, v1_56_0_711, v1_56_1_717, v1_56_1_716, v1_61_0_796, v1_61_0_797, v1_61_0_795, v1_61_0_798, v1_61_0_799, v1_55_0_696, v1_55_0_697, v1_55_0_695, v1_56_2_724, v1_56_2_722, v1_55_1_697, v1_56_0_714, v1_63_0_818, v1_63_0_817, v1_63_0_816, v1_63_0_815, v1_62_0_805, v1_62_0_804, v1_62_0_807, v1_62_0_806, v1_56_0_712, v1_62_0_803, v1_62_0_802, v1_56_0_713, v1_62_0_809, v1_56_0_721, v1_60_0_780, v1_60_0_779, v1_62_0_810, v1_62_0_811, v1_58_0_747, v1_60_0_783, v1_59_2_785, marged_bRESPOPUP, v1_56_0_706, v1_60_1_793, v1_58_0_763, v1_58_0_762, v1_58_0_761, v1_58_0_760, v1_62_1_813, v1_57_2_749, v1_57_0_742, v1_57_0_743, v1_57_0_740, v1_57_0_741, v1_56_0_709, v1_57_0_744, v1_56_0_708, v1_61_0_800, v1_56_0_699, v1_56_0_698, v1_60_0_793, v1_60_0_792, v1_60_0_791, v1_60_0_790, v1_60_2_794, v1_61_1_801, HEAD
Branch point for: Bb57, Bb56, Bb55, Bb62, Bb63, Bb60, Bb61, Bb59, Bb58, bRESPOPUP, bListSU
Changes since 1.1: +1 -1 lines
File MIME type: text/x-pascal
置換後の文字列にtabが含まれていた不具合の修正

1 unit ReplaceDataModule;
2
3 interface
4
5 uses
6 SysUtils, Classes;
7
8 type
9 TReplaceDM = class(TDataModule)
10 procedure DataModuleCreate(Sender: TObject);
11 procedure DataModuleDestroy(Sender: TObject);
12 private
13 { Private 絎h? }
14 //! 臀?????鴻??
15 FReplaceList: TList;
16 public
17 { Public 絎h? }
18 procedure LoadFromFile(const filePath: String);
19 function Replace(const source: String): String;
20 end;
21 TReplace = class(TObject)
22 private
23 FTarget: String;
24 FReplace: String;
25 public
26 constructor Create(const line: String);
27 property Target: String read FTarget write FTarget;
28 property Replace: String read FReplace write FReplace;
29 end;
30
31 var
32 ReplaceDM: TReplaceDM;
33
34 implementation
35
36 uses
37 MojuUtils, Dialogs, StrUtils;
38
39
40 {$R *.dfm}
41
42 //! ???鴻?宴?若????絖?緇???????
43 function UnEscape(const source: String): String;
44 begin
45 // 荐?????<?ゃ?????????障?丈?吾???┃絎????<?ゃ??????????ゃ??????????
46 // ?蚊?????????荐?????絖??????鴻?宴?若???с??????????????
47 // \. \( \) \{ \} \/ \" \\
48 Result := MojuUtils.CustomStringReplace(source, '\.', '.');
49 Result := MojuUtils.CustomStringReplace(Result, '\(', '(');
50 Result := MojuUtils.CustomStringReplace(Result, '\)', ')');
51 Result := MojuUtils.CustomStringReplace(Result, '\{', '{');
52 Result := MojuUtils.CustomStringReplace(Result, '\}', '}');
53 Result := MojuUtils.CustomStringReplace(Result, '\"', '"');
54 Result := MojuUtils.CustomStringReplace(Result, '\/', '/');
55 Result := MojuUtils.CustomStringReplace(Result, '\\', '\');
56 end;
57
58 //! ?潟?潟?鴻????????/span>
59 procedure TReplaceDM.DataModuleCreate(Sender: TObject);
60 begin
61 // 臀???莟≧??絖???篆??????鴻????????
62 FReplaceList := TList.Create;
63 end;
64 //! ???鴻????????/span>
65 procedure TReplaceDM.DataModuleDestroy(Sender: TObject);
66 var
67 i: Integer;
68 begin
69 if (FReplaceList <> nil) then begin
70 // ???鴻????賢荳???ree???若?喝?冴??
71 for i := FReplaceList.Count - 1 downto 0 do begin
72 TObject(FReplaceList.Items[i]).Free;
73 end;
74 // ???鴻???????ゃ????
75 FReplaceList.Clear;
76 FReplaceList.Capacity := 0;
77 FreeAndNil(FReplaceList);
78 end;
79 end;
80 //! ???<?ゃ????粋昭?水????
81 procedure TReplaceDM.LoadFromFile(const filePath: String);
82 var
83 fileStrings: TStringList;
84 i: Integer;
85 rep: TReplace;
86 ignored: Boolean;
87 begin
88 // ???<?ゃ??????????с????/span>
89 if (FileExists(filePath)) then begin
90 ignored := False;
91 fileStrings := TStringList.Create;
92 fileStrings.LoadFromFile(filePath);
93 try
94 // ???鴻????????障???
95 for i := 0 to fileStrings.Count - 1 do begin
96 rep := TReplace.Create(fileStrings[i]);
97 // <> ?????障?????????????с????/span>
98 if (AnsiPos('<>', rep.Target) > 0) or
99 (AnsiPos('<>', rep.Replace) > 0) then begin
100 ignored := True;
101 end else begin
102 FReplaceList.Add(rep);
103 end;
104 end;
105 finally
106 fileStrings.Free;
107 end;
108 if (ignored) then begin
109 ShowMessage('<>????????絖?????/??舟?????????????с???障??????'#13#10'荐?????<?ゃ????腆肴??????????????');
110 end;
111 end;
112 end;
113
114 //! 臀??????
115 function TReplaceDM.Replace(const source: String): String;
116 var
117 i: Integer;
118 rep: TReplace;
119 begin
120 Result := source;
121 // nil?с???????????<????綽泣??????
122 if (FReplaceList <> nil) then begin
123 for i := FReplaceList.Count - 1 downto 0 do begin
124 rep := TReplace(FReplaceList.Items[i]);
125 Result := MojuUtils.CustomStringReplace(Result, rep.Target, rep.Replace);
126 end;
127 end;
128 end;
129 //! ?潟?潟?鴻????????/span>
130 constructor TReplace.Create(const line: String);
131 begin
132 Replace := '';
133 // 1茵????帥???у?阪????
134 if (AnsiPos(#9, line) > 0) then begin
135 Target := Copy(line, 0, AnsiPos(#9, line) - 1);
136 Replace := Copy(line, AnsiPos(#9, line) + 1, Length(line));
137 end else begin
138 Target := line;
139 end;
140 // Target?????鴻?宴?若??????????絖????祉??
141 Target := UnEscape(Target);
142 // replace??''??????????????絖??違???鴻???若?鴻??┃絎?
143 if (Replace = '') then begin
144 Replace := StrUtils.DupeString(' ', Length(Target));
145 end;
146 end;
147
148 end.

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