2015年10月30日 星期五

WORD文件取代字串

最近要把WORD文件中的年月和一些日期資料給換掉,不過因為要改的WORD文件太多了,就寫了一段Delphi程式來做修改。
程式說明如下:

// SFile 來源的WORD文件路徑,TFile是要存的WORD文件
procedure ChangeDOC(SFile,TFile : string);
var
  WordApp, WordDocu, myRange: variant;
  sStr,rStr : String;
begin
    // 開啟來源的WORD文件
    WordApp := CreateOleObject('Word.Application');
    WordApp.Visible := True;
    WordDocu := WordApp.Documents.Open(SFile);
    myRange := WordDocu.Content;
    try
      // sStr是要被取代的字串,rStr是要取代的內容
      sStr := Edit3.Text;
      rStr := Memo1.Text;
     // 這一行是重點,啟動WORD的取代功能
      myRange.Find.Execute(FindText := sStr, ReplaceWith := rStr, Replace := 2);
    // 存成新的WORD檔
      WordDocu.SaveAs(TFile);
    finally
      WordApp.Quit;
    end;
    ShowMessage('轉WORD完成');
end;

提供給大家做參考

2015年10月23日 星期五

DELPHI又易主了

IDERA 合併 Embarcadero

這應該是DELPHI愛用者最近的震憾彈。以下是引用新總裁對大家說明的電子檔

http://embarcadero.qcomgroup.com.tw/Customer_welcome_letter_Taiwan.pdf

從DELPHI第一次被賣掉,走了一段黑暗時期,大家都很怕回到先前那段新版開發不良的日子。不過也因為第二度賣給Embarcadero公司,解決了UNICODE的問題,進入APP的發展,才又把DELPHI給救了回來。

新的合併案,不知未來會如何,希望對所有DELPHI的愛好者可以有更多的期待。不過筆者是在資料庫寫程式的人員,對我們這種程式人員來說,IDERA可以提供在這方面更好的支援也說不定。下一版的DELPHI,任重道遠,希望可以給DELPHI愛好者一個新的感受。


 

2015年10月6日 星期二

Delphi的Post和ApplyUpdate

參加DELPHI XE10的發表會後,就一直在忙公司的工作,沒時間上來寫文章。這期間看到了許多Delphi同好在其他論壇討論XE10的APP問題,看樣子XE10這次在APP的支援上,還是有不少狀況。
最近碰上了一位新進的DELPHI同好,他說他老是無法把資料存起來,幫忙Debug才發現是他Post和ApplyUpdate沒有弄懂。所以上來說明一下這二者的區分。
一般Post是把資料存到我們的記憶體,表示我們的資料更改完成,但是並沒有存回後端真正的資料庫,等到我們下ApplyUpdate時才把資料存回後端的資料庫。那為什麼要分這二個動作呢?
因為在修改資料時,不一定只改一筆Record,例如修改明細資料時,通常我們會修改很多筆才一起存回後端,那修改一筆時,如果要檢查資料,這時就需要在Post檢查資料是否正確了,所以Post是檢查一筆資料的好時機。
那Applyupdate存回資料庫是很多筆資料的異動,這時就適合做整體的檢查,例如明細資料的金額是不是和上方的總金額相同等。如果沒有例外,就真的更新資料庫了。
剛入門的Delphi人員常會覺得這二個指令很麻煩,是不是可以合在一起。可是用久了,就會知道這種方式對實務解決問題有很大的幫助。
在此提供新進人員做參考。