注册 登录
编程论坛 VFP论坛

调用api Too many arguments (Error 1230)

weiyisc 发布于 2022-02-19 01:33, 2849 次点击
程序代码:

        Declare integer MDC_AddScreenDrug In DLL_PASS4 String pcIndex, Int piOrderNo, String pcDrugUniqueCode, String pcDrugName, String pcDosePerTime,;
            String pcDoseUnit, String pcFrequency, String pcRouteCode, String pcRouteName, String pcStartTime,;
            String pcEndTime, String pcExecuteTime, String pcGroupTag, String pcIsTempDrug, String pcOrderType,;
            String pcDeptCode, String pcDeptName, String pcDoctorCode, String pcDoctorName, String pcRecipNo,;
            String pcNum, String pcNumUnit, String pcPurpose, String pcOprCode, String pcMediTime, String pcRemar   
        
        RETURN MDC_AddScreenDrug(pcIndex,piOrderNo,pcDrugUniqueCode,pcDrugName,pcDosePerTime,pcDoseUnit,pcFrequency,pcRouteCode,;
            pcRouteName,pcStartTime,pcEndTime,pcExecuteTime,pcGroupTag,pcIsTempDrug,pcOrderType,pcDeptCode,pcDeptName,;
            pcDoctorCode,pcDoctorName,pcRecipNo,pcNum,pcNumUnit,pcPurpose,pcOprCode,pcMediTime,pcRemark)


        调用API,提示参数太多。请问一下怎么回事?参数不能超多少?
只有本站会员才能查看附件,请 登录
14 回复
#2
吹水佬2022-02-19 09:44
对照了一下刚好,VFP传递参数的最大数目 26

#3
weiyisc2022-02-19 11:25
以下是引用吹水佬在2022-2-19 09:44:05的发言:

对照了一下刚好,VFP传递参数的最大数目 26


那么怎么还是提示参数太多?
#4
吹水佬2022-02-19 11:58
你那个是什么API函数,搞那么多参数。
#5
weiyisc2022-02-19 13:01
回复 4楼 吹水佬
第三方软件公司的
#6
kangss2022-02-19 14:37
回复 楼主 weiyisc
参数太多,就是:参数多

比如:DECLARE INTEGER FindWindow IN user32 参数1, 参数2

你这样调用:FindWindow(参数1, 参数2, 参数3)

就返回:参数太多
#7
weiyisc2022-02-19 22:33
回复 2楼 吹水佬
VFP传递参数的最大数目 26

但是在申明的时候,最多25个。。。26把参数太多
#8
吹水佬2022-02-20 08:30
以下是引用weiyisc在2022-2-19 22:33:05的发言:

VFP传递参数的最大数目 26

但是在申明的时候,最多25个。。。26把参数太多

未试过用这么多参数的API,可以测试一下
#9
吹水佬2022-02-20 09:11
测试了一下,API最多25个参数,VFP函数就26个
只有本站会员才能查看附件,请 登录

程序代码:
**    DLLIMPORT void test(
**        int* a,int* b,int* c,int* d,int* e,int* f,int* g,int* h,int* i,int* j,
**        int* k,int* l,int* m,int* n,int* o,int* p,int* q,int* r,int* s,int* t,
**        int* u,int* v,int* w,int* x,int* y,int* z)
**    {
**        *a=1, *b=2, *c=3, *d=4, *e=5, *f=6, *g=7, *h=8, *i=9, *j=10,*k=11,*l=12,*m=13;
**        *n=14,*o=15,*p=16,*q=17,*r=18,*s=19,*t=20,*u=21,*v=22,*w=23,*x=24,*y=25,*z=26;
**    }

DECLARE test IN test.dll ;
    long@,long@,long@,long@,long@,long@,long@,long@,long@,long@,;
    long@,long@,long@,long@,long@,long@,long@,long@,long@,long@,;
    long@,long@,long@,long@,long@,long@
   
STORE 0 TO a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
test(@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l,@m,@n,@o,@p,@q,@r,@s,@t,@u,@v,@w,@x,@y,@z)
? a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z

#10
吹水佬2022-02-20 09:21
测试了一下,VFP自定义函数最多27个参数
程序代码:
STORE 0 TO a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa
test2(@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l,@m,@n,@o,@p,@q,@r,@s,@t,@u,@v,@w,@x,@y,@z,@aa)
? a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa

FUNCTION test2(a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,u1,v1,w1,x1,y1,z1,aa1)
    STORE 1 TO a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,u1,v1,w1,x1,y1,z1,aa1
ENDFUNC

#11
weiyisc2022-02-20 16:13
以下是引用吹水佬在2022-2-20 09:11:06的发言:

测试了一下,API最多25个参数,VFP函数就26个

**    DLLIMPORT void test(
**        int* a,int* b,int* c,int* d,int* e,int* f,int* g,int* h,int* i,int* j,
**        int* k,int* l,int* m,int* n,int* o,int* p,int* q,int* r,int* s,int* t,
**        int* u,int* v,int* w,int* x,int* y,int* z)
**    {
**        *a=1, *b=2, *c=3, *d=4, *e=5, *f=6, *g=7, *h=8, *i=9, *j=10,*k=11,*l=12,*m=13;
**        *n=14,*o=15,*p=16,*q=17,*r=18,*s=19,*t=20,*u=21,*v=22,*w=23,*x=24,*y=25,*z=26;
**    }

DECLARE test IN test.dll ;
    long@,long@,long@,long@,long@,long@,long@,long@,long@,long@,;
    long@,long@,long@,long@,long@,long@,long@,long@,long@,long@,;
    long@,long@,long@,long@,long@,long@
   
STORE 0 TO a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
test(@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l,@m,@n,@o,@p,@q,@r,@s,@t,@u,@v,@w,@x,@y,@z)
? a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z

昨天折腾完了,api定义最多25个。
感谢版主
#12
吹水佬2022-02-20 16:41
以下是引用weiyisc在2022-2-20 16:13:01的发言:


昨天折腾完了,api定义最多25个。
感谢版主

不明白这个API函数为何要用那么多入口参数,参数个数多不是好习惯。
#13
weiyisc2022-02-20 23:01
回复 12楼 吹水佬
确实,现在常规是传个json串。就可以了。
#14
湖中花2022-03-01 13:52
有没有参数长度不超过255个字符的限制?记不清是哪个语言有了
#15
吹水佬2022-03-01 15:04
以下是引用湖中花在2022-3-1 13:52:02的发言:

有没有参数长度不超过255个字符的限制?记不清是哪个语言有了

是字符串255个字符的限制吧,如delphi的短字符串类型
1