用Dll开发多语言系统的问题(100分)

  • 主题发起人 主题发起人 bestsnow
  • 开始时间 开始时间
B

bestsnow

Unregistered / Unconfirmed
GUEST, unregistred user!
1.我用Delphi建了一个best.dll工程,其中包含了test.rc,test.rc的内容如下:
STRINGTABLE
{
10001, "测试1"
10002, "测试2"
10003, "测试3"
}
把这个工程编译得到 best.dll
2.我再建了一个工程test.exe,把best.dll copy到test目录下。在Test中放了一个Label,和一个Button。
在Button1的OnClick中有如下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
hin : THandle;
ch :LPTSTR;
begin

hin := LoadLibrary('chen.dll');
if(hin=0)then
ShowMessage('fail')
else
begin
LoadString(hin,10003,ch,255);
end;

Label1.Caption := ch;
FreeLibrary(hin);
end;
运行正常。
但我在FormCreate中加如上代码时报如下错误:
Access violation at address 00435014 in module 'test.exe'. Read of address DDBEFDB6.

请产生这个问题的原因,如何解决?
 
LoadLibrary('chen.dll');//-〉'chen.dll'吗?
uses sharemem了吗?
 
没有分配内存PChar!
 
因为我是刚从C++Builder转到Delphi有很多东东不清楚.请说具体一点。
uses sharemem是怎么回事
分配内存PChar! 怎么分配。我两次都没有分配,为什么一次可行而另一次不可行?
 
请使用LoadStr代替LoadString
 
多人接受答案了。
 
后退
顶部