doremidai 发表于 2019-1-30 21:41:49

读取多个不同txt文件到编辑框的实现方法

根据某教程的源码
在对话框定义文件中,有一个清单选框,会显示出指定档案的内容(全是中文字);当使用者选取清单中的项目时,该项目的中文字便会显示在下面的编辑框里(加在原有字符串的后面);当按下确定钮时,对话框结束,并使用TEXT指令将编辑框内的文字插入至绘图屏幕上.
最终读取到编辑框里出错,这个代码感觉逻辑不是很清晰。暂时脑袋有点短路,请路过的大虾看看还有其他方法读取多个不同txt文件到编辑框没

;主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN C:LBOX ()   (SETQ DCL_ID (LOAD_DIALOG (findfile "LBOX.DCL") ) CHK 0)
(NEW_DIALOG "LBOX" DCL_ID)
(ADDL)
(ACTION_TILE "LBOX_T" "(ADDL)")                ;新增的下拉式选框组件动作
(ACTION_TILE "LBOX_L" "(SETQ TMP_R (ATOI (GET_TILE \"LBOX_L\")))(SETC)")
(ACTION_TILE "accept" "(SETQ CHK 1
    TMP_S (GET_TILE \"LBOX_E\"))(DONE_DIALOG)")
(START_DIALOG) (UNLOAD_DIALOG DCL_ID)
(IF (= CHK 1)
               (COMMAND "TEXT" (GETPOINT \"Select text insert point :") "0" TMP_S)
)
(PRINC))


(DEFUN ADDL()

(cond

(= (GET_TILE "LBOX_T") "0")                ;检查选择了的主题
    (SETQ F_ID (OPEN (findfile "TEXT1.txt")"r"))         ;开启档案1
(= (GET_TILE "LBOX_T") "1")
    (SETQ F_ID (OPEN (findfile "TEXT2.txt")"r"))         ;开启档案2
(= (GET_TILE "LBOX_T") "2")
    (SETQ F_ID (OPEN (findfile "TEXT3.txt")"r"))         ;开启档案2
)      
(SETQ TMP_T (READ-LINE F_ID) TMP_L (LIST ""))
(WHILE (/= TMP_T NIL)
      (SETQ TMP_L (APPEND TMP_L (LIST TMP_T)))
    (SETQ TMP_L (READ-LINE F_ID))
)
(CLOSE F_ID)
(SETQ TMP_L (LIST (CDR TMP_L)))
(START_LIST "LBOX_L" 3 0)
(MAPCAR 'ADD_LIST (CAR TMP_L))
(END_LIST))

(DEFUN SETC()

(cond

(= (GET_TILE "LBOX_T") "0")                ;检查选择了的主题
    (SETQ F_ID (OPEN (findfile "TEXT1.txt")"r"))         ;开启档案1
(= (GET_TILE "LBOX_T") "1")
    (SETQ F_ID (OPEN (findfile "TEXT2.txt")"r"))         ;开启档案2
(= (GET_TILE "LBOX_T") "2")
    (SETQ F_ID (OPEN (findfile "TEXT3.txt")"r"))         ;开启档案2
)
(IF (> TMP_R 0)   
         (REPEAT TMP_R (READ-LINE F_ID)))   
(SETQ TMP_S (GET_TILE "LBOX_E"))   
(SETQ TMP_S (STRCAT TMP_S (READ-LINE F_ID)))   
(CLOSE F_ID)   
(SET_TILE "LBOX_E" TMP_S))
下面是对话框DCL代码
//对话框DCL代码;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LBOX:dialog
{   label="Create chinese" ;
:popup_list   //下拉式清单选框组件
{   label="中文主题" ;
    key="LBOX_T" ;
    width=25;
    fixed_width=true;
    list="玻璃门窗\n五金配件\n其他";
}
:list_box   //清单选框组件
{   label="中文字" ;
    key="LBOX_L" ;
    width=25;
    height=8;
    fixed_width=true;
    fixed_height=true;
}
:edit_box   //编辑框组件
{   label="中文字" ;
    key="LBOX_E" ;
    width=25;
    fixed_width=true;
}
ok_cancel;
}







itoboy 发表于 2019-7-24 00:32:01

感谢分享源码

白色微風1991 发表于 2022-7-21 16:26:34

感謝分享源碼

spp_wall 发表于 2022-8-31 15:57:48

感謝分享源碼
页: [1]
查看完整版本: 读取多个不同txt文件到编辑框的实现方法