2011-06-02

Delphi Inifiles Buffer Size 修正

Delphi提供了方便讀寫.ini檔的物件TIniFile,但是預設ReadSection的buffer size僅只16k,如果有較大量資料讀取時,會造成資料讀取不完全的問題。
其實經過修正source code再產生新的.dcu檔,並覆蓋原始同名的檔案即可解決這個問題,步驟如下:
  • Delphi 版本 7.0
  • 需修正的檔案\Delphi7\Source\Rtl\Common\IniFiles.pas
  • 需更新的檔案\Delphi7\Lib\IniFiles.dcu
  1. File -> New -> Application
  2. Project -> Add to Project -> 選取 \Delphi7\Source\Rtl\Common\IniFiles.pas
  3. 找到下列下列程式碼並自行修正buffer size
    procedure TIniFile.ReadSection(const Section: string; Strings: TStrings);
    const
       BufSize = 16384;  //<-預設為16k
  4. 儲存檔案,File -> Save
  5. 設定Compiler參數,Project -> Options -> Compiler -> 取消Debugging群組所有的選項
  6. 產生IniFiles.dcu檔,Project -> Compile Project or Ctrl + F9
  7. 將\Delphi7\Source\Rtl\Common\IniFiles.dcu覆蓋原檔\Delphi7\Lib\IniFiles.dcu即更新完成

沒有留言: