pb--tuxedo--fml32 值传递问题

scor11 2004-11-24 03:39:51
function int Fchg32(long pFBFR, long FLDID, int occur, ref string outbuf, int FLDLEN) library "wtuxws32.dll"
function int Fget32(long pFBFR, long FLDID, int occur, ref string outbuf, ref int FLDLEN) library "wtuxws32.dll"

用上面函数传递string类型变量没有问题,
可是long,double这种参数,具体应该怎么写?
网上看到有fchgl32,fchgd32这类函数,可是我看了一下,wtuxws32.dll里面根本就没这些函数啊

大大救命,在线等待~~~~急啊
...全文
471 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
scor11 2004-12-03
  • 打赏
  • 举报
回复
不好意思
long fldif不是相当于缓冲区的指针么,它指向的的string长度超过10位长

然后用上面的函数把string取出来时候就会报内存不可读错误
WorldMobile 2004-12-03
  • 打赏
  • 举报
回复
alias for Fchg32,意思是动态库里的函数名,如果你用了alias,前面那个名字无所谓的,你自己可以随便起,呵呵
WorldMobile 2004-12-03
  • 打赏
  • 举报
回复
long是整形,为什么你会超过10位长?是你说错了还是真的?看不太明白
scor11 2004-12-03
  • 打赏
  • 举报
回复
新问题!!!
楼上的救命
function integer fgets32(long fbfr,long fldif,long occ,ref string buf,long flen)library "wtuxws32.dll" alias for Fget32

如果long fldif缓冲里面的字符串超过10位长,pb就会报内存不可读错误,真是晕倒了要
scor11 2004-12-03
  • 打赏
  • 举报
回复
楼上的真是好人哪
感激涕零~~~
WorldMobile 2004-12-03
  • 打赏
  • 举报
回复
至少内存不可读错误,应该是你的string一开始未分配空间

建议先把你的字符串变量初始化一下,如 ls_data = space(200)

你再试试,如果有问题,再找我

至于你提的那个函数,建议再开一贴,让大家来帮你,呵呵
scor11 2004-12-03
  • 打赏
  • 举报
回复
顺便问一下
Fprint32()这个按fml32格式打印缓冲区的函数,在windows下怎么用的

在unix 的服务端:Fprint32(sendbuf),会直接打印到stdout这个文件中
pb程序中它打印到哪去了?怎样指定它打印的文件名?
scor11 2004-11-29
  • 打赏
  • 举报
回复
haha,小弟真是贻笑大方了,

照楼上的方法,已经解决了,傻傻的问,alias for Fchg32

这个算是什么作用,用Fchg32这个现成的函数,瞎编一个函数出来也可以啊?

WorldMobile 2004-11-26
  • 打赏
  • 举报
回复
呵呵,版主,你就用Fchg32函数,然后再声明几个函数取即可

function integer fchgd32(long fbfr,long fldif,long occ,ref double buf,long flen)library "wtuxws32.dll" alias for Fchg32

function integer fchgl32(long fbfr,long fldif,long occ,ref long buf,long flen)library "wtuxws32.dll" alias for Fchg32

function integer fchgs32(long fbfr,long fldif,long occ,string buf,long flen)library "wtuxws32.dll" alias for Fchg32

其实这几个函数用的还是wtuxws32.dll中的Fchg32这个函数,只不过前面的名字变了一下而己

你试试,应该可以的
scor11 2004-11-26
  • 打赏
  • 举报
回复
楼上的,我装的tuxedo6.5的客户端自带的wtuxws32.dll里面的确没有你说的这些函数
要什么版本的才有?或者哪里有得下最全的wtuxws32.dll,
要么把你用的wtuxws32.dll发我邮箱里?scor11@163.com
解决的话,马上送分,呵呵,看到希望了,先谢谢拉
cyactiveboy 2004-11-25
  • 打赏
  • 举报
回复
TUXEDO开发我做过,是可能没有这两个函数,但是有下面这些函数:
function integer fchgd32(long fbfr,long fldif,long occ,ref double buf,long flen)library "wtuxws32.dll" alias for Fchg32
function integer fchgl32(long fbfr,long fldif,long occ,ref long buf,long flen)library "wtuxws32.dll" alias for Fchg32
function integer fchgs32(long fbfr,long fldif,long occ,string buf,long flen)library "wtuxws32.dll" alias for Fchg32
scor11 2004-11-25
  • 打赏
  • 举报
回复
en,上面的方法我当然想过,可是在c下面好好用的fml32,在pb下面各个字段都要设置成string类型不可?这个好像太勉强了
progrose 2004-11-24
  • 打赏
  • 举报
回复
用string传递, 再用string接受
scor11 2004-11-24
  • 打赏
  • 举报
回复
把long和double转换成string,是可以传进去,但是fml32的long型fieldid的地方就取不出来了
WorldMobile 2004-11-24
  • 打赏
  • 举报
回复
查了一下资料,没看到wtuxws32.dll里有传数值类型的函数,你fchgl32或fchgd32之类的,

也可能是我的wtuxws32.dll的版本太低了

你再找个最新的版再试试
mittee 2004-11-24
  • 打赏
  • 举报
回复
long - >long
double ->decimal
int - > long
试试
WorldMobile 2004-11-24
  • 打赏
  • 举报
回复
即然字符串能传进去,你就把long和double类型的变量转化为字符串传过去不就行了?
mittee 2004-11-24
  • 打赏
  • 举报
回复
long - >long
double ->decimal
int - > long
试试

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧