请Pipi大侠进来拿分.(100分)

  • 主题发起人 主题发起人 jingtao
  • 开始时间 开始时间
J

jingtao

Unregistered / Unconfirmed
GUEST, unregistred user!
我做一个多语言版本的程序
我把语言注释部分分为几个文件,Chinese.pas,TChinses.pas,Engkish.pas
现在有个问题:我想让DELPHI在编译代码的时候根据不同的条件使用不同的语言pas
C中好像可以用下面的代码实现:
const LANGUAGE_VERSION = 'TRADITIONAL_CHINESE';
{$IF LANGUAGE_VERSION = 'TRADITIONAL_CHINESE'}
; ... ;// this code executes
{$ELSEIF LANGUAGE_VERSION = 'SIMPLIFIED_CHINESE'}
; ... ;// this code doesn't execute
{$ELSE LANGUAGE_VERSION='ENGLISH'}
在DELPHI中如何做呢?最好给个详细点的代码.关于编译开关的资料很少,所以有劳大侠了.
 
这可是个难题
 
如果懂的话就不难:)
 
[blue]不好意思,我不太懂这个呀![:(][/blue]
 
单独写一个文件MutiLag.pas
内容如下:
.....
uses
{$IFDEF CH_GB}
; TChinese,
{$ENDIF}
; ;
{$IFDEF CH_BIG5}
; chinese,
{$ENDIF}
; ; Lang_default.pas;//建议提供一个缺省的语言文件
.....

在你的引用处一用这个unit就ok了

你可以在project->option->conditionals中加入CH_GB or
CH_BIG5和VC类似,会在整个Projectz中有效

btw:在任意一个单元中想打开一个开关:
{$DEFINE CH_GB}
 
uses
{$IFDEF Language_GB32}
; Chinese,
{$ENDIF}
{$IFDEF Language_BIG5}
; ChinaBIG5,
{$ENDIF}
English; //建议提供一个缺省的语言文件

但是无论如何打开开关,它都只使用English.pas.
uses
{$IFDEF Language_GB32}
; Chinese,
{$ENDIF}
{$IFDEF Language_BIG5}
; ChinaBIG5,
{$ENDIF}
{$IFDEF Language_English}
; English; //建议提供一个缺省的语言文件
{$ENDIF}
改为上面的后编译时候无法通过.identifier expected but 'PROCEDURE' found
最后改为uses
{$IFDEF Language_GB32}
; Chinese,
{$ENDIF}
{$IFDEF Language_BIG5}
; ChinaBIG5,
{$ENDIF}
{$IFDEF Language_English}
; English, //建议提供一个缺省的语言文件
{$ENDIF}
;shellapi;
才通过.但是我的程序不需要其它UNIT了,那么我的分号应该添加在哪里呢?
 
{$DEFINE Language_GB32} //至少得定义一个
uses
{$IFDEF Language_GB32}
; Chinese,
{$ENDIF}
{$IFDEF Language_BIG5}
; ChinaBIG5,
{$ENDIF}
{$IFDEF Language_English}
; English; //建议提供一个缺省的语言文件
{$ENDIF}
 
问题出在最后那个分号写在哪里好啊
写在哪里不编译出错?
 
{$DEFINE Language_GB32} //至少得定义一个
uses
{$IFDEF Language_GB32}
; Chinese //不要,
{$ENDIF}
{$IFDEF Language_BIG5}
; ChinaBIG5
{$ENDIF}
{$IFDEF Language_English}
; English //建议提供一个缺省的语言文件
{$ENDIF}; //写在这
 
接受答案了.
 
后退
顶部