1 unit ReplaceDataModule;
9 TReplaceDM = class(TDataModule)
10 procedure DataModuleCreate(Sender: TObject);
11 procedure DataModuleDestroy(Sender: TObject);
14 //!
\92u
\8a·
\83\8a\83X
\83g
18 procedure LoadFromFile(const filePath: String);
19 function Replace(const source: String): String;
21 TReplace = class(TObject)
26 constructor Create(const line: String);
27 property Target: String read FTarget write FTarget;
28 property Replace: String read FReplace write FReplace;
32 ReplaceDM: TReplaceDM;
37 MojuUtils, Dialogs, StrUtils;
42 //!
\83G
\83X
\83P
\81[
\83v
\95¶
\8e\9a\95\9c\8c³
\8f\88\97\9d
43 function UnEscape(const source: String): String;
45 //
\90Ý
\92è
\83t
\83@
\83C
\83\8b\82É
\82»
\82Ì
\82Ü
\82Ü
\8f\91\82
\82Æ
\90Ý
\92è
\83t
\83@
\83C
\83\8b\8e©
\91Ì
\82ª
\8dí
\8f\9c\82³
\82ê
\82é
\82Ì
\82ð
46 //
\96h
\82®
\82½
\82ß
\82É
\89º
\8bL
\82Ì
\95¶
\8e\9a\82ð
\83G
\83X
\83P
\81[
\83v
\82Å
\82«
\82é
\82æ
\82¤
\82É
\82·
\82é
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, '\\', '\');
58 //!
\83R
\83\93\83X
\83g
\83\89\83N
\83^
59 procedure TReplaceDM.DataModuleCreate(Sender: TObject);
61 //
\92u
\8a·
\91Î
\8fÛ
\95¶
\8e\9a\97ñ
\95Û
\8e\9d\83\8a\83X
\83g
\82Ì
\90¶
\90¬
62 FReplaceList := TList.Create;
64 //!
\83f
\83X
\83g
\83\89\83N
\83^
65 procedure TReplaceDM.DataModuleDestroy(Sender: TObject);
69 if (FReplaceList <> nil) then begin
70 //
\83\8a\83X
\83g
\82Ì
\92\86\90g
\82Ìfree
\82ð
\8cÄ
\82Ñ
\8fo
\82·
71 for i := FReplaceList.Count - 1 downto 0 do begin
72 TObject(FReplaceList.Items[i]).Free;
74 //
\83\8a\83X
\83g
\82ð
\8dí
\8f\9c\82·
\82é
76 FReplaceList.Capacity := 0;
77 FreeAndNil(FReplaceList);
80 //!
\83t
\83@
\83C
\83\8b\93Ç
\82Ý
\8d\9e\82Ý
\8f\88\97\9d
81 procedure TReplaceDM.LoadFromFile(const filePath: String);
83 fileStrings: TStringList;
88 //
\83t
\83@
\83C
\83\8b\82Ì
\91¶
\8dÝ
\83`
\83F
\83b
\83N
89 if (FileExists(filePath)) then begin
91 fileStrings := TStringList.Create;
92 fileStrings.LoadFromFile(filePath);
94 //
\82·
\82×
\82Ä
\82Ì
\8ds
\82Ì
\82Ü
\82í
\82·
95 for i := 0 to fileStrings.Count - 1 do begin
96 rep := TReplace.Create(fileStrings[i]);
97 // <>
\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82¢
\82é
\82©
\83`
\83F
\83b
\83N
98 if (AnsiPos('<>', rep.Target) > 0) or
99 (AnsiPos('<>', rep.Replace) > 0) then begin
102 FReplaceList.Add(rep);
108 if (ignored) then begin
109 ShowMessage('<>
\82ð
\8aÜ
\82Þ
\95¶
\8e\9a\97ñ
\82ð/
\82É
\92u
\8a·
\82·
\82é
\82±
\82Æ
\82Í
\82Å
\82«
\82Ü
\82¹
\82ñ
\81B'#13#10'
\90Ý
\92è
\83t
\83@
\83C
\83\8b\82ð
\8am
\94F
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B');
114 //!
\92u
\8a·
\8f\88\97\9d
115 function TReplaceDM.Replace(const source: String): String;
121 // nil
\82Å
\82 \82é
\82±
\82Æ
\82Í
\96³
\82¢
\82ª
\94O
\82Ì
\82½
\82ß
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);
129 //!
\83R
\83\93\83X
\83g
\83\89\83N
\83^
130 constructor TReplace.Create(const line: String);
133 // 1
\8ds
\82ð
\83^
\83u
\82Å
\8bæ
\90Ø
\82é
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));
140 // Target
\82Ì
\83G
\83X
\83P
\81[
\83v
\82ð
\8c³
\82Ì
\95¶
\8e\9a\82É
\96ß
\82·
141 Target := UnEscape(Target);
142 // replace
\82ª''
\82Ì
\8e\9e\82Í
\81A
\93¯
\82¶
\95¶
\8e\9a\90\94\82Ì
\83X
\83y
\81[
\83X
\82É
\90Ý
\92è
143 if (Replace = '') then begin
144 Replace := StrUtils.DupeString(' ', Length(Target));