dll 中 string 的用法(24分)

  • 主题发起人 主题发起人 chl720
  • 开始时间 开始时间
C

chl720

Unregistered / Unconfirmed
GUEST, unregistred user!
一函數如下:<br>&nbsp;function TForm1.Enc(Str:String):String;<br>var<br>&nbsp; i,j:Integer;<br>&nbsp; begin<br>&nbsp; &nbsp; Result:='';<br>&nbsp; &nbsp; j:=0;<br>&nbsp; &nbsp; for i:=1 to Length(Str) do<br>&nbsp; &nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result:=Result+IntToHex(Byte(Str) xor XorKey[j],2);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j:=(j+1) mod 8;<br>&nbsp; &nbsp; &nbsp; &nbsp;end;<br>&nbsp; end;<br><br>在普通的form &nbsp;中沒有問題, <br>但我想用dll &nbsp;封裝這個函數 ; 在dll 如使用 string ; 能有結果, 但提示:<br>invalid pointer poeration <br>&nbsp;<br>后改成如下 (dll 文件)<br>function &nbsp;ENC(str:PChar):PChar;stdcall;//字符串加密<br>var<br>&nbsp; i,j:Integer;<br>&nbsp; begin<br>&nbsp; &nbsp; Result:='';<br>&nbsp; &nbsp; j:=0;<br>&nbsp; &nbsp; for i:=1 to Length(str) do<br>&nbsp; &nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result:=Result+IntToHex(Byte(strtoint(PChar(i))) xor XorKey[j],2);;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j:=(j+1) mod 8;<br>&nbsp; &nbsp; &nbsp; &nbsp;end;<br>&nbsp; end;<br>不能通過, 各位幫我看看, 應該怎樣改才正確! &nbsp;謝謝, 沒分了, 只有24分了, 全送了!
 
use sharemem
 
最好修改成这个形式<br>function &nbsp;ENC(SrcStr:PChar; DstStr : PChar):integer;stdcall;//<br><br>DstStr空间先分配好
 
uses sharemem <br>把这句写在dll和调用dll的窗体中,因为dll本身无法识别String类型
 
use sharemem
 
mataijin,的建议是最好的<br>function &nbsp;ENC(SrcStr:PChar; DstStr : PChar):integer;stdcall;//<br>dststr 要先定义好空间 若 str:array[0..1000] of char;<br>然后加密<br>strpcopy(dststr, s) 方法返回.<br>调用的时候 enc(pchar(ss),@str)
 
謝謝以上的各位了, 我下了一個補訂, 然后就可以了, 說是到了2006 就支持了, <br>delphi7 本身不支持, uses sharemem ,很多朋友說可以, 但是要在調用窗體也引用<br>再次謝謝各位! 4*6=24
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
630
import
I
I
回复
0
查看
671
import
I
I
回复
0
查看
528
import
I
后退
顶部