|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2004/2/26 20:35:40 |
标题: |
|
加入我的收藏 |
楼主: |
bios兄; 是这样的:dll库里的 c 函数是:int f(int startaddress,int ilength,char far *lp); 他的意思是把缓冲区 lp 里的字符写到起始地址是 staretaddress 长度是 ilength的 ic 字节里。 在delphi里写成:function f9f(startaddress,ilength:integer;lp:pchar):integer;但是你说 p;pchar,p 不能指向字符串。也不可能这样写: var i;integer; s;string p;pchar; s:='12345'; p:=pchar(s); while p^<>#0 do begin f(i,100,p^); i=i+1; inc(p); end 如果这样那么 f(i,100,p^);就没意义,因为每次反正是加一个字符。 可不可以写这样function(startaddress,ilength:integer;lp:Pstring):integer; 还是给我的 dll 应该是int f(int startaddress,int ilength,string lp),但是如果是 int f(int startaddress,int ilength,char far *lp),那我应该怎么做,有办法可想没/? 谢谢
----------------------------------------------
lsh |
作者: |
sephil (NAILY Soft) |
★☆☆☆☆ |
-
|
盒子中级会员 |
|
2004/2/26 21:20:00 |
1楼: |
function f(StartAddress, iLength: Integer; lp: LPTSTR): Integer; stdcall; external 'yourdll.dll';
用的时候
var S: PChar; begin S := '1234'; f(0, 0, S); end;
应该不会有什么问题的
----------------------------------------------
Copyright 2008 ? NAILY Soft Click here to redirect to my home Click here to redirect to my blog
|
作者: |
bios (阿贡) |
★☆☆☆☆ |
-
|
盒子中级会员 |
|
2004/2/26 22:16:28 |
2楼: |
实际使用的时候要灵活应用
startaddress:这个应该和你的具体项目有关
ilength:=sizeof(s);//字符长度
pchar(s)//实际调用的只要 这样就可以了!
举个例子: if mu<>' then shellexecute(application.handle,'open',pchar(mu),nil,nil,SW_SHOWNORMAL)
----------------------------------------------
|
|