EDA365电子工程师网

标题: 求助为什么获取的FORM里的路径提取出来不是string格式? [打印本页]

作者: wuyuhe    时间: 2015-9-16 08:22
标题: 求助为什么获取的FORM里的路径提取出来不是string格式?
FORM里是这么设置的
               fprintf(formFile "FIELD  file_direction \n")
            fprintf(formFile "FLOC 5 1 \n")
            fprintf(formFile "STRFILLIN 25 35 \n") 已经定义为字符啦
            fprintf(formFile "ENDFIELD  \n")
             fprintf(formFile "FIELD  mima \n")
            fprintf(formFile "FLOC 5 4 \n")
            fprintf(formFile "STRFILLIN 25 35 \n")已经定义为字符啦
            fprintf(formFile "ENDFIELD  \n")
                    fprintf(formFile "FIELD liulan \n")
                    fprintf(formFile "FLOC 33 1 \n")
                    fprintf(formFile "MENUBUTTON \"\344\257\300\300\" 6 2 \n")
                    fprintf(formFile "ENDFIELD \n")

          (case myForm->curField
               ("liulan"
                    workpath=axlDMFileBrowse(nil nil ?optFilters "Skill File(.*il)|*.il|")
                    axlFormSetField(myForm "file_direction"  workpath)
               )
               ("file_direction"
                  _file = myForm->curValue
                )
               ("jiami"                  
                    if(_file != nil
                     then                                      
                    mm = myForm->curValue                  
                    outFilePath = strcat(substring(_file 1 (strlen(sprintf(nil "%s" _file))-3)) ".ile")
                    encrypt(sprintf(nil "%s" _file) sprintf(nil "%s" outFilePath) mm)
                    axlUIConfirm(sprintf(nil "Encrypt skill success! Password is %s" mm))
                    else
                     axlUIConfirm("Error! No File Selected!")
               )
               )
现在运行的时候老是报错E- *Error* strcat: argument #1 should be either a string or a symbol (type template = "S") - nil
不知道是为什么,那个_file获取值的TYPE不是string吗?


作者: kevin890505    时间: 2015-9-16 09:18
你从strcat(substring(_file 1 (strlen(sprintf(nil "%s" _file))-3)) ".ile")看下substring 的返回值 和类型及就知道了啊 单句调试嘛,拿眼睛看有什么用     看下中间每个返回参数的value  type就一目了然了
作者: wuyuhe    时间: 2015-9-16 15:09
kevin890505 发表于 2015-9-16 09:18
你从strcat(substring(_file 1 (strlen(sprintf(nil "%s" _file))-3)) ".ile")看下substring 的返回值 和类 ...

我知道啊,只有_file这个参数是string那么strcat(substring(_file 1 (strlen(sprintf(nil "%s" _file))-3)) ".ile")返回值肯定就是string了啊
我现在就是不知道那个提取的值是不是不是STRING所以才引起这个ERROR的啊?
我的想法是打开某个路径文件,然后把这个文件的后缀名改成.ile。


作者: XYX365    时间: 2015-9-16 15:43
wuyuhe 发表于 2015-9-16 15:09
我知道啊,只有_file这个参数是string那么strcat(substring(_file 1 (strlen(sprintf(nil "%s" _file))-3 ...

你可以改用此函數axlDMFileParts() 提取檔案名稱,

另外必須修改成下列
("liulan"
                    workpath=axlDMFileBrowse(nil nil ?optFilters "Skill File(.*il)|*.il|")
                    axlFormSetField(myForm "file_direction"  workpath)
                    _file =  workpath
               )

作者: wuyuhe    时间: 2015-9-16 17:11
XYX365 发表于 2015-9-16 15:43
你可以改用此函數axlDMFileParts() 提取檔案名稱,

另外必須修改成下列

把那个_file=workpath放liulan里问题解决了,谢谢!





欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2