DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: luismasgoret
今日帖子: 40
在线用户: 10
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 lsh998 (lsh) ★☆☆☆☆ -
盒子活跃会员
2004/2/26 20:35:40
标题:
bios 兄,快来啊! 浏览:1284
加入我的收藏
楼主: 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)
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS