首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 實作同類文件自動合併:RichEdit 流式處理大量 RTF 文檔

     編輯:Delphi

問題背景與解決思路

900 句英語學習教材分散在 900 個獨立 RTF 檔(Sentence001.rtf~Sentence900.rtf),手動合併極其繁瑣。利用 Delphi TRichEdit 元件支援 RTF 格式、可透過剪貼板流式追加內容的特性,編寫自動化合併程式:依序載入 → 全選 → 複製 → 追加貼上 → 最後存檔。

核心元件屬性與方法

屬性/方法說明
Lines: TStrings文本行集合,支援 LoadFromFile/SaveToFile
PlainText: BooleanFalse=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;
程式設計介面:兩個RichEdit與開始合併按鈕 合併執行過程示意

通用版本:支援多選、無命名規則、純文字檔案

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 格式解析,以極簡代碼解決大量格式化文件合併問題。同理可擴展至:日誌檔聚合、報表自動組裝、程式碼片段收集等批次文本處理場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved