急救!!关于DLL问题(100分)

  • 主题发起人 主题发起人 shodoy
  • 开始时间 开始时间
S

shodoy

Unregistered / Unconfirmed
GUEST, unregistred user!
我的DLL代码为:

library Testing

uses
SysUtils,
Classes;

{$R *.res}
Function EnCode(SCode:String):String;
Var
ECode:String;
i:Integer;

begin
ECode:='';
For i:=1 To Length(SCode) Do
ECode:=ECode+Chr(byte(SCode)+1);
Result:=ECode;
end;
exports EnCode;
begin
end.

调用:
Function EnCode(SCode:String):String:Far;
External 'Testing';
procedure TForm1.Button1Click(Sender: TObject);
Var
SCode:String;
begin
SCode:='AAA';
Form1.Caption:=EnCode(SCode);
end;

当SCode的长度小于等于3时有时不出错,有时出错,但是当SCode长度大于3时一定有出错提示,但是结果还是正确的.
请问错出在哪里?
 
在DLL中不要用String类型, 最好用PChar。
换用Pchar试试!
 
看一下Dll工程文件中的那一段英文注释,应该会有点帮助吧
 
在DLL里不要用一个String!这个String把我害蠢了!你还要限定长度
 
用PChar时如何求每一个字符的ASCII值?
 
一样用就行了
 
我使用这个Chr(byte(SCode)+1)时,提示我SCode的类型不正确.
 
不会吧,我刚试了一下很正常啊
你确定你调用时的参数类型和dll中函数的参数类型都是PChar 吗
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
I
回复
0
查看
512
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部