* updated by Kii Ali, 12-11-2001 ftp://ftp.nsysu.edu.tw/cpatch/faq/tech/00_delphi.txt Subject: Dehpli 寫出的程式 ------------------------------------------------------------------------------------------ Date: Thu, 15 Apr 1999 12:43:05 +0800 From: Issac Chang To: Patch-Author Subject: 關於 Dehpli 寫出的程式的資源... 大家好: 有沒有人知道 Delphi 寫出的程式裡面 RcData 下的 TCaptionButtonsEditor 與 TCaptionControlAbout 這兩個資源的用途是甚麼?弟將這兩個資源刪除,程 式還是照跑不誤(試過兩個 Delphi 寫出的軟體都可 以)。看來這兩個資源好像不是必要的??? RcData﹁ ∟ TCaptionButtonsEditor ∟ TCaptionControlAbout ∟ ... ∟ ... ------------------------------------------------------------------------------------------ From: "Jonson" To: "March Fun" , "Patch-Author" References: Subject: Re: 關於 Dehpli 寫出的程式的圖檔... Date: Sat, 17 Apr 1999 09:33:26 +0800 > 有個非常棘手的事,不知有沒有人可以解決? > > Dehpli 寫出的程式會把圖檔以十六進位的表示放在 RCdata 中,如下: > > Picture.Data = { > 07544269746D617098FD0000424D98FD00000000000036040000280000000802 > 00003C010000010008000100000062F90000120B0000120B0000000100000001 > 0000FFFFFF00F7FFFF00F7F7FF00E7F7FF00E7E7FF00A5E7FF006BDEFF00C6D6 > FF0039D6FF0021CEFF0000C6FF0029BDFF0063B5FF0000B5FF00A5ADFF0000AD > FF00089CFF00009CFF001094FF000884FF000084FF00949CF700848CF700737B > F700187BF700636BF7003963F7004252F70000ADEF001884EF004A63EF003963 > EF00294AEF002942EF001042EF00FFEFE700FFE7E700A5B5E700315AE700A5E7 > DE00DEDEDE00CED6DE006BADDE004A8CDE00214ADE001039DE00CEEFD600EFCE > ........ > > 是否有軟體可以將這些十六進位碼變成圖檔,修改後再變成十六進位的模式? > > 陳寬達兄,這方面不知您有沒有研究?如果有的話,是否可以提供一下意見? > > 謝謝! 是可以將這些十六進位碼變成圖檔。我是土法鍊鋼。 取出: 1. 複製部份數字,以上例:07544269746D617098FD0000424D98FD 需為偶數。 2. 用 Hex Workshop 開啟程式檔搜尋上面 hex(非 ASCII)找出圖檔的開頭,再用同樣方法 找出圖檔的結尾,而後將之選取--複製。 3. 用 Hex Workshop 開啟新檔,將複製的資料貼上,存成正確的圖檔附檔名 (eXeScope 有註明圖檔類型),如此即可得到圖檔。 放回: 1. 用 Hex Workshop 開啟圖檔,全選、複製。 2. 用 Hex Workshop 開啟程式,找出圖檔資料,全部選取再貼上、存檔即可。 ------------------------------------------------------------------------------------------ From: "Jonson" To: References: Subject: Re: 關於 Dehpli 寫出的程式的資源... Date: Sat, 17 Apr 1999 09:51:11 +0800 > >有沒有人知道 Delphi 寫出的程式裡面 RcData 下的 > >TCaptionButtonsEditor 與 TCaptionControlAbout > >這兩個資源的用途是甚麼?弟將這兩個資源刪除,程 > >式還是照跑不誤(試過兩個 Delphi 寫出的軟體都可 > >以)。看來這兩個資源好像不是必要的??? > > > >RcData﹁ > > ∟ TCaptionButtonsEditor > > ∟ TCaptionControlAbout > > ∟ ... > > ∟ ... > > 好奇怪, 我對這兩個 class name 有印象, 不過 > Delphi 4 VCL 中的確找不到這兩個 class, 試了幾個 > Delphi executables, 也都找不到這兩個 resource。 > > 可以告訴我是哪一套軟體嗎 ? 我研究看看 :> 這 TCaptionButtonsEditor 與 TCaptionControlAbout 應該是「螢幕格式集」的名稱,可自訂,不一定是固定名稱。 所謂「螢幕格式集」就是許多「表單」(FORM)的集合,「螢幕格式」 顧名思意,就是螢幕上您看得到的程式外觀介面設計。 像有些作者會把它們命名成 TFORM1、TFORM2、TFORM3 等名稱。 通常這些「螢幕格式」在程式中是一定有作用的,若您將部份資源 拿掉,或許程式還可以跑,但可能部份功能會不能用或程式會當掉。 不知您玩過 VISUAL FOX PRO 沒?VFP 的螢幕格式的設計非常的視覺化, 所以也非常的簡單,但因為視覺化,所以在程式上的東西幾乎都是必須的, 通常不會有人放些垃圾在上面。 ------------------------------------------------------------------------------------------ From: "Jonson" To: "patch-author" References: Subject: Re: eXeScope 另類中文化法 Date: Tue, 13 Apr 1999 05:10:55 +0800 > 之前小正正(如果我沒記錯的話)曾經問過該如何中文化非 Unicode 的軟體 . 若這軟體亦非由 Delphi 發展,用 eXeScope 也無法中文化,只能用 CKit 這類的 程式了。 > 重點來了 , 我們應該修改那裡呢 ? > 注意到由上數第六行的 Caption = 'Welcome' , 這個 Caption 之後的字串事實 > 上是軟體執行時的某一些訊息或是字元 . AHA ! 這就是我們要的 , 直接修改 > Welcome > 歡迎 , 就完成了 . 當然啦 , 將整個程式碼複製到文書軟體編輯後再貼 > 上也是可以的 . 要是修改了 Caption 後,在程式執行時修改的字串末尾有部份不見了怎辨? 仔細看看 Caption 後是否有這一行 "WordWrap = True", 若有則刪除之試試看,不過這種情形倒不多見。 > 要求完美的人 ,Font.Height = -11 和 Font.Name = 'MS Sans Serif' , 最好 > 也改一改 . 至於後面這堆我們就不管它啦 . 若 Font.Name 要改的話,Font.Height 也一定要改,不然您就可以大聲說: 「親愛的,我把 "視窗" 變小了」。 若 Font.Name = '新細明體',那 Font.Height 我覺得設為 16 較佳。 這種 Delphi 軟體發展出來的程式要中文化最麻煩了,雖然可以用 eXeScope 來增長字串,但中文化後仍要使用 CKit 之類的程式再抓一次 ASCII字串, 或許還要用 BC、VC 再做一次 RC 檔翻譯呢! 像目前我在中文化的 HTMLCompress 5.0 就是如此,快被它打敗了。(哈) RCDATA 的字典檔及翻譯工具雖可自行寫個小程式來用,但其資源要調整 大小卻無法視覺化,只能改改、試試,再改改、試試,實在夠煩。 ------------------------------------------------------------------------------------------ Date: Thu, 06 May 1999 01:26:23 +0800 From: Jackry To: patch-author@patch.hort.ntu.edu.tw Subject: 有關Delphi軟體的中文化... 您好,弟是 Jackry 最近利用 Delphi 或 C++ Builder 發展出的軟體有愈來愈多的趨勢, 而中文化此類型的軟體用 VC++ 或 BC++ 就有點派不上用場,無法直接編 輯她資源存放的地方--RC的Data節區,更不用說視覺化修改了! 因為自己有用過 Delphi 寫過 CKit 的使用者介面,在程式發展中, Delphi 會所建構出.PRJ/.PAS/.DFM 這三種檔案,而.DFM就是存放視窗或 對話盒資源的所在。相當於 VC++ 的 Dialog 資源,不過裡面可擺的資源 種類,除了發展環境所提供之外,還可以外加一些別人作好的元件。如果 你的發展環境沒有這個元件的話,是無法視覺化編輯這個元件的。 疑! 視覺化編輯 Delphi 的軟體,這可行嗎? 只要將RCData中的資源 元件還原成*.DFM檔 (可以用Exescope來做),然後再出與它相關聯的.PAS 檔來使用此DFM內容,理論上是可行的。在程式寫作中,發展環境會自動 加上視窗的型態及使用那些元件的宣告敘述,而這些在.DFM檔中可看出一 些蛛絲馬跡。只要推斷出此DFM檔它有用到那些元件,並將對應的資料型 態宣告敘述寫回至.PAS檔。待會用 Delphi 或 C++ Builder 開啟此PAS檔 ,就會顯示出這張表單 (即 DFM 檔) 的內容,如此就可以用發展環境的 Object Inspector (物件檢視器) 來修改文字內容。 (一般需要中文化的字串,是在Properties(屬性)頁上的Caption, Hint這 兩個屬性值。當然,表單上的元件大小可以直接滑鼠拖拉 ^o^) 說了這麼多,那要如何做出*.DFM所對應的.PAS檔呢? 弟有做一個小 工具,可以從DFM檔中判斷它有用那些物件,並將資料型態的宣告敘述寫 至與DFM同名稱的.PAS檔。 DFM工具 ======= 這個工具是在MS-DOS模式下使用的。 用法1: 製作出與此表單檔相關聯的.PAS檔案 範例. DFM tfrmsite.dfm tfrmr*.dfm 解說. 做出與tfrmsite.dfm, tfrmr*.dfm相關聯的tfrmsite.pas 與tfrmr*.pas 用法2: 將指定的DFM檔內容,更新至 RC 檔內 範例. DFM /b tfrmsite.dfm leapftp.rc 解說. 若tfrmsite.dfm屬於leapftp.rc的RCData,才會將此DFM的 內容更新至指定的rc檔內。 (請注意! 所製成的.PAS檔並沒有將事件 (即所謂的 procedure (程序)) 完整宣告出來,不過並不影響中文化的工作。) 中文化步驟 ========== 在開始之前,你還需要下列的工具: 1. CKit's DFM 工具 ftp://ftp.nsysu.edu.tw/cpatch/beta/236jackry/dfm.zip 2. Exescope ftp://ftp.nsysu.edu.tw/cpatch/patchutil/exescope/source/exesc410.zip 3. Delphi 或 C++ Builder (建議用Delphi V2.0以上,用 Delphi 還可以新增元件至表單中) LeapFtp V2.60的例子 ------------------- Step1. 捉出RCData中的DFM檔 a. 用Exescope編輯LeapFtp的主程式: LeapFTP.exe b. 使用選單中[檔案]的Export...功能,儲存想視覺化編輯的部分。 此例選擇: TFRMMAIN Step2. 做出相關聯的PAS檔 a. dfm tfrmmain.dfm Step3. 使用Delphi或C++ Builder來修改DFM檔內容 a. 開啟 tfrmmain.pas (開啟時,若出現Class XXX缺少的情況,可以按ignore忽略它) b. 點選要修改的元件,然後在Object Inspector中修改Caption, Hint屬性的內容 c. 儲存後離開。 Step4. 利用Exescope將修改過的DFM檔匯入RCData中 a. 回到RCData節區中,並選則TFRMMAIN元件 b. 使用選單中[檔案]的Import...功能,將剛才修改的tfrmmain.dfm 匯入此TFRMMAIN元件中 c. 儲存後離開。 Step5. 測試中文化後的程式正不正常 野人獻曝自己對中文化Delphi軟體的心得,希望這篇文章能對你有所 助益,有錯誤的地方還請不吝指正。 ------------------------------------------------------------------------------------------ From: "March Fun" To: "Patch-Author" Subject: 對付 Delphi 編寫軟體的簡單又好用的方法 Date: Thu, 20 May 1999 17:10:39 +0800 這個方法或許已經有人知道了...獻醜一下... 中文化 Delphi 編寫的軟體一定要取得整套的 Delphi 嗎?答案是否定的。 這個方法很簡單, 一、以 exescope 開啟要中文化的軟體,將 RCDate 中要中文化的對話框 「存成外部檔案」,這個時候,技巧來了,在「存檔類型」中只有 (Delphiform *.dfm) 及 (所有的檔案 *.*) 兩種,這時候選取 (所有的檔 案 *.*) 並將副檔名自訂為 .txt,如 about.txt 二、請用文字編輯器打開此 about.txt ,您看到的是什麼呢?沒錯,是純文 字模式的格式,純文字的意思就是....隨你搞啦!如字型、對話框大小 、位置等都可以視需要自行調整。 三、在 exescope 中以「讀取外部檔案」來回存這個翻譯過後的 about.txt, 當然還是得指定 (所有的檔案 *.*) 類型。您可以看到視窗內容已經全 部置換成翻譯過後的內容了。 其他的一些小細節,如字型設定成新細明體,字型大小 -12 或 -13 等,遇 有中文字無法正確顯示時,把它的 Font.Charset 從 ANSI_CHARSET 改成 DEFAULT_CHARSET 即可。 ------------------------------------------------------------------------------------------ From: "Eric" To: "Kii Ali" References: Subject: 中文化-初階實戰-淺談 Date: Tue, 1 Jun 1999 17:50:02 +0800 中文化-初階實戰-淺談 ============================================================ eXescope 4.21 中文化修正軟體操作﹕ 國際碼編譯模組、表單、字串的修改 1. Resource 目錄下的任何可見的對話盒和字串先匯出成文字原名稱 .tex 檔案,修改完成後使用匯入原名稱 .txt 取代同名組件。 2. 版本資訊忽略。 3. 程式內部份 16 進位容後使用 Ultraedit 編緝器去手動修改。 Ultraedit 4.x 或 5.x 編緝器手動修改 (先建立修改程式捷徑到桌面方便邊修改邊執行測試) 搜尋修改目標/功能選單項括號﹕ 1. 使用搜尋對話盒尋找 " 檔案(&F " 使用 16 進位碼尋找輸入鍵入是﹕ "94 6A 48 68 28 00 26 00 46" 按下尋找鈕搜尋。 例子﹕ 檔案 = " 94 6A 48 68 ","( "= "28 00","&" = "26 00","F" = "46 00" 很多中文化作者聲稱選單項目括號空白限制無法保究 ,其實未必.....! 當然在使用了 eXescope 4.21 選項括號內快速鍵也解決過去如中文工 具箱的缺點,但是在某些 Beta 軟體編譯後存在格式長短問題, Workshop 及 eXescope 4.21 也讀取失敗未能使用執行中文化,使用 Ultraedit 編緝器去手動修改也就有其必要。 修改實戰﹕ 1. 在目標項目名稱的下行剪下空白位置 "20 00" 貼上﹕ " 94 6A 48 68 28 00 26 00 46 xx xx " 改成﹕ " 94 6A 48 68 28 00 26 00 46 20 00 " 3. 改成﹕ " 94 6A 48 68 28 00 26 00 46 29 00 " 例子﹕" ) "= " 29 00 " 2. 按動捷徑執行程式測試,成功 ! 註﹕非屬下欄位除外,但從外圍位置剪裁可以留待另文詳說。 ---------------------------------------------------------------------------- -------------------------- Delphi 4.x 或 Delphi Builder X.x 單位元方式編譯主模組、表單、字串 的修改﹕ eXescope 4.21 中文化修改操作﹕ 1. Resource 目錄下的任何可見的對話盒和字串先匯出成文字原名稱 .tex 檔案, 修改完成後使用匯入原名稱 .txt 取代同名組件。 2. 程式前頂部份 16 進位先忽略容後使用 Ultraedit 編緝器去手動修改。 Ultraedit 4.x 或 5.x 編緝器手動修改 (先建立修改程式捷徑到桌面方便邊修改邊執行測試) 搜尋修改目標/功能選單項括號快速鍵﹕ 1. 使用搜尋對話盒尋找 " 檔案(&F " 使用 16 進位碼尋找輸入鍵入是﹕"94 6A 48 68 28 26 46" 按下尋找 鈕搜尋。 ( 例子﹕ 檔案 = 94 6A 48 68,( = 28,& = 26,F = 46 ) 當然在使用了 eXescope 4.21 選項括號內快速鍵也解決過去如中文工具 箱的缺點,但是在大部份軟體編譯後存在使用 16 進位碼文字格式, eXescope 4.21 也未能夠完整讀取使用執行中文化,使用 Ultraedit 編緝器去手動修改也仍然是一樣必要。 修改選項括號快速鍵、其他字串實戰﹕ 1. 利用在目標項目名稱的尾端 " 00 00 " 位置 例如﹕" 94 6A 48 68 28 26 46 00 00 00 " 2. 改成﹕" 94 6A 48 68 28 26 46 29 00 00 " 例子﹕" ) "= " 29 " 3. 修改字串前字元數值 "FF FF FF FF 08 00 00 00 " 改成﹕" FF FF FF FF 08 00 00 00 94 6A 48 68 28 26 46 29 00 00 " 4. 按動捷徑執行程式測試,成功 ! 5. 以上方式可以用在其他字串前 " FF FF FF FF xx " 引述的選項、字串, 但不適用大多的按鈕修改! 例如﹕" 00 00 00 OK 00 00 00" 註﹕修改後有文字不能置中情形,唯有看字串前的引述而定,反之剪裁 上述位置成 " 20 " 就可隨意修正按鈕的置中位置。 ---------------------------------------------------------------------------- ---------------------------- 編譯後程式單位元文字或單位元編譯後程式文字顯示修改﹕ 1. Font.Charset 修正﹕ 檢查﹕Font.Charset " " 的屬性 修正﹕Font.Charset DEFAULT-CHARSET 2. Font.color (略過改動) 3. Font.Height 修改 修改﹕Font.Height 02 " F3 09 " 改成﹕Font.Height 02 " F4 09 " 例子﹕標準大小通用值,夠狠的話可以使用搜尋功能全部取代 ! 4. Font.Name 修改﹕ 修改﹕Font.Name MS Sans Serif 繁體﹕Font.Name 新細明體 簡體﹕Font.Name MS Ming 或 Font.Name MS Song 註﹕如果單是繁體轉簡體碼後不修訂字型名稱,若簡體系統內(或已安 裝有 IE 4.x 字型)字型新細明體,程式仍會顯示繁體,反之相同。 ---------------------------------------------------------------------------- ------------------------------ 中文化後 Workshop 及 eXescope 4.21 的讀取 中文化後往往使用 Workshop 4.xx 或 eXescope 4.xx 不能再次讀取完成 檔案,一般不能查明原因是否格式、檔案長度差別,但是可以嘗試在檔案尾 端補上若干 " 00 00 " 寫回重讀,不妨多次測試大有機會能夠成功讀取! ----------------------------------------------------------------------------