900 句英語學習教材分散在 900 個獨立 RTF 檔(Sentence001.rtf~Sentence900.rtf),手動合併極其繁瑣。利用 Delphi TRichEdit 元件支援 RTF 格式、可透過剪貼板流式追加內容的特性,編寫自動化合併程式:依序載入 → 全選 → 複製 → 追加貼上 → 最後存檔。
| 屬性/方法 | 說明 |
|---|---|
| Lines: TStrings | 文本行集合,支援 LoadFromFile/SaveToFile |
| PlainText: Boolean | False=RTF格式,True=純文字 |
| Clear | 清空所有內容 |
| SelectAll | 選取全部內容 |
| CopyToClipboard | 複製選取內容到剪貼板 |
| PasteFromClipboard | 從剪貼板貼上到游標位置 |
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer; FileName, Rear: String;
begin
RichEdit1.Clear; RichEdit2.Clear;
FileName := 'f:\ce900\text\sentence'; // 檔案路徑前綴
for i := 1 to 900 do
begin
if i < 10 then Rear := '00' + IntToStr(i)
else if i < 100 then Rear := '0' + IntToStr(i)
else Rear := IntToStr(i);
RichEdit1.Lines.LoadFromFile(FileName + Rear + '.rtf'); // 載入單檔
RichEdit1.SelectAll;
RichEdit1.CopyToClipboard; // 複製到剪貼板
RichEdit2.PasteFromClipboard; // 追加到目標 RichEdit
RichEdit1.SetFocus; // 焦點切換確保剪貼板同步
end;
RichEdit2.Lines.SaveToFile('f:\ce900\ce900.rtf'); // 存檔合併結果
end;
procedure TForm1.Button1Click(Sender: TObject);
var I: Integer; F: TextFile; Content: String;
begin
OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist];
OpenDialog1.Filter := 'Text files (*.txt)|*.txt|All files (*.*)|*.*';
OpenDialog1.FilterIndex := 2;
if OpenDialog1.Execute then
with OpenDialog1.Files do
for I := 0 to Count - 1 do
begin
AssignFile(F, Strings[I]);
Reset(F);
while not Eof(F) do
begin
Readln(F, Content);
Memo1.Lines.Append(Content);
end;
CloseFile(F);
end;
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
此法利用 TRichEdit 的 RTF 原生支援與剪貼板中介,繞過複雜的 RTF 格式解析,以極簡代碼解決大量格式化文件合併問題。同理可擴展至:日誌檔聚合、報表自動組裝、程式碼片段收集等批次文本處理場景。