日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Delphi ResourceString的用法

發布時間:2023/10/11 综合教程 81 老码农
生活随笔 收集整理的這篇文章主要介紹了 Delphi ResourceString的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Delphi編程的那段“古老”的日子里(就是在版本4之前),在程序中使用字符串有兩個基本的方法。你可以使用字符串將它們嵌入到源程序中,例如:

MessageDlg( 'Leave your stinkin' mitts off that button, fool!',mtError, [mbOK], 0);

或者,你可以創建一個文本文件(使用.rc擴展名),例如:

STRINGTABLE DISCARDABLE 

1 "Dialog Expert" 
2 "Dialog Expert from demonstration Expert DLL." 
3 "Application Expert" 
4 "Application Expert from demonstration Expert DLL" 
5 "&Create" 
6 "&Next" 
7 "An application name is required!" 
8 "The application name is not a valid identifier." 
9 "The path entered does not exist." 
10 MAIN.PAS" 
11 "MAIN.DFM" 
12 "MAIN.TXT" 
... 
// Variable names. 
20 "StatusLine" 
... 
}

然后你需要做的工作是將它編譯成為資源文件,加入到Delphi的工程或者單元中,使用命令行工具Brcc32.exe編譯,然后在程序中當你使用到這些字符串時,使用LoadStr等函數將它們從資源中提取出來。這看起來有點麻煩,而且你可能會被困在這麻煩的操作中,因此你可能會無休止地將字符串加入到你的源代碼中而不是使用資源。

現在,resourcestring關鍵字的出現,可以幫助你擺脫這麻煩的工作。resourcestring帶給我們兩個好處:可以簡單地加入字符串,而且所有的字符串集中保存在同一個位置;同時,使用resourcestring提供更好的內存管理,因為所有在resourcestring部分的字符串是以資源形式保存在應用程序中。

讓我們趕快進入使用resourcestring關鍵字的新世界,增加一個單元到你的工程中,名字是ResStrngs(或者其它名字),然后將所有的字符串(特別是那些將會被用戶看到的字符串:列表的內容,錯誤消息等等)加入到這個單元的接口(Interface)部分,就像下面一樣:

unit ResStrngs;

interface

resourcestring 
// 著名的軍事家 
SGeneralElectric = 'General Electric'; 
SGeneralMills = 'General Mills'; 
SGeneralUsage = 'General Usage'; 
SGeneralHospital = 'General Hospital'; 
SGeneralLedger = 'General Ledger'; 
SGeneralProtectionFault = 'General Protection Fault'; 
SGeneralSQLError = 'General SQL Error'; 
SGeneralLeeSpeaking = 'General Lee Speaking'; 
SCorporalPunishment = 'Corporal Punishment'; 
SSgtFury = 'Sgt. Fury'; 
SSgtCarter = 'Sgt. Carter'; 
SSgtSchultz = 'Sgt. Schultz'; 
SSargentShriver = 'Sargent Shriver'; 
SCaptKangaroo = 'Capt. Kangaroo'; 
SCaptUnderpants = 'Capt. Underpants'; 
SColonelKlink = 'Colonel Klink'; 
SPrivateBenjamin = 'Private Benjamin'; 
SPrivateProperty = 'Private Property'; 
SLeftenantDan = 'Leftenant Dan'; 
SMutineerChristian = 'Mutineer Christian'; 
SAtlantaHawks = 'Atlanta Hawks'; 
// 友好的提示 
SDontSleepInTheSubwayDarlin = 
'Don't sleep in the subway darlin''; 
// 你還可以繼續增加字符串

implementation

end.

在任何可能引用這些字符串的單元的實現(implementation)部分的uses語句中加入此單元。然后,你可以這樣使用這些字符串:

if ItIsPetulasVirtualHusband and HeIsLate then 
MessageDlg(SDontSleepInTheSubwayDarlin, 
mtInformation, [mbOK], 0);

還有一個例子:Borland/Inprise同樣使用字符串資源,你可以看看..\source\vcl目錄下的consts.pas、dbconsts.pas等文件。

將字符串集中放在resourcestring部分還有一個好處就是,通常程序員并不是最適合寫用戶將會看到的反饋信息或者錯誤消息的人,他們寫的往往太技術性,例如:“模塊xyz:生成子線程時發生一個未預期錯誤”,這對用戶來說等于沒說,也許“請在開始前保存修改”會更好一些。

將這些消息字符串單獨保存在一個分離的文件中,可以讓那些適合編寫用戶消息的人來處理(當然,要有程序員來當顧問,以便確定每條消息表示什么含義)。如果你不想讓這些非編程人員來修改你的.pas文件,你可以將這些字符串保存到一個文件文件中交給他們處理,當他們處理完成后,你再將他們修改后的字符串復制到你的resourcestring部分。

最后但是也非常重要的是,當把用戶或以看到的字符串都收集在一個地方,可以讓你很容易地讓你的應用程序國際化和本地化。使用Delphi的ITE(Integrated Translation Environment 集成翻譯環境),國際化和本地化你的應用程序的字符串幾乎是半自動完成的。使用ITE,你可以為每種語言創建一個獨立的.dll。如果你發布時帶有多個.dll文件,通過程序運行的計算機系統的地區號,你的程序可以自動調用對應的.dll。

ITE主要的工具就是資源DLL向導(Resource DLL Wizard) (File | New | Resource DLL Wizard) 和翻譯管理器(Translation Manager)。翻譯管理器用于輸入翻譯的內容,可以查看Delphi的幫助文件的"Integrated Translation Environment"部分獲得具體信息。

除Delphin提供的ITE外,還有第三方的相關工具。我喜歡使用來自 "in the box." 的工具,當然,像ITE一樣,只要他工作得好。

總結

以上是生活随笔為你收集整理的Delphi ResourceString的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。