因此,您应该:
[列表]
[*]以读取模式打开文件-打开,
[*]解析每一行,直到文件结束(nil)-同时读取行(&R),
[*]将后缀附加到每行-STRCAT,
[*]将这些行存储到列表中-追加,
[*]完成后,关闭文件-关闭,
[*]以写模式打开文件-打开,
[*]解析所述列表并将项目记录到文件-FOREACH&WRITE-LINE,
[*]完成后,关闭文件;这也将保存它-关闭,
问候,
米尔恰 谢谢你,米尔恰。
顺致敬意,
现在它有了意义。
我想我问错问题了。 @斯伯泰拉:不客气!
如果您在这段代码中遇到问题,只需将您编写的内容张贴在此处以获得进一步帮助。访问文件时不要忘记关闭文件。
当做
米尔恰
我也被帖子的标题搞糊涂了。
当做
米尔恰 我试过这么做,但没有成功。你能帮我找出错误吗?
lisp代码:
(defun C:d2 ( )
(setq DCL (load_dialog "d2")) ;
(new_dialog "CARTA2" DCL)
(action_tile "IDCarta" "(setq NCarta (get_tile \"IDCarta\"))")
(action_tile "25M" "(setq Escala 25000)")
(action_tile "10M" "(setq Escala 10000)")
(action_tile "5M" "(setq Escala 5000)")
(action_tile "accept" "(done_dialog)") ;
(action_tile "cancel" "(setq NCarta nil)(done_dialog)")
(start_dialog) ; Inicia
(unload_dialog DCL) ;
;----------------------------------
(setq lspdir "E:\\CartasTXT\\")
(setq txtfile (strcat lspdir "notes"))
(setq fichTXT (open (getfiled "Defina o nome e a localização do ficheiro TXT da carta." txtfile "txt" 1) "w"))
(prin1 (type fichTXT))
(if (= Escala 25000) (
(write-line (strcat NCarta "-your choice is 25000, line1") fichTXT)
(write-line (strcat NCarta "-your choice is 25000, line2") fichTXT)
(write-line (strcat NCarta "-your choice is 25000, line3") fichTXT)
;......an so on
(close fichTXT)
))
;----------------------------------
(if (= Escala 10000) (
(write-line (strcat NCarta "-your choice is 10000, line1") fichTXT)
(write-line (strcat NCarta "-your choice is 10000, line2") fichTXT)
(write-line (strcat NCarta "-your choice is 10000, line3") fichTXT)
;......an so on
(close fichTXT)
))
;----------------------------------
(if (= Escala 5000) (
(write-line (strcat NCarta "-your choice is 5000, line1") fichTXT)
(write-line (strcat NCarta "-your choice is 5000, line2") fichTXT)
(write-line (strcat NCarta "-your choice is 5000, line3") fichTXT)
;......an so on
(close fichTXT)
))
)
dcl代码:
/* Dialog Box: carta2 */
CARTA2: dialog { label = "Escala da Carta";
:radio_button {key = "25M"; label = "Carta 1:25000"; }
:radio_button {key = "10M"; label = "Carta 1:10000"; }
:radio_button {key = "5M"; label = "Carta 1:5000"; }
spacer;
:edit_box { label = "ID da Carta "; key = "IDCarta"; width = 7; }
spacer;
ok_cancel;
}
我会看看你的代码;同时,请编辑您的最后一篇文章,添加代码括号。
当做
米尔恰 我用COND重写了代码。此外,最好在尝试访问新文件之前验证用户是否为其提供了名称。
(defun C:d2 ( / DCL NCarta Escala lspdir txtfile fichTXT )
(setq DCL (load_dialog "d2")) ;
(new_dialog "CARTA2" DCL)
(action_tile "IDCarta" "(setq NCarta (get_tile \"IDCarta\"))")
(action_tile "25M" "(setq Escala 25000)")
(action_tile "10M" "(setq Escala 10000)")
(action_tile "5M" "(setq Escala 5000)")
(action_tile "accept" "(done_dialog)") ;
(action_tile "cancel" "(setq NCarta nil)(done_dialog)")
(start_dialog) ; Inicia
(unload_dialog DCL) ;
;----------------------------------
(setq lspdir "E:\\CartasTXT\\")
(setq txtfile (strcat lspdir "notes"))
(if (and NCarta
Escala
(setq fichTXT (getfiled "Defina o nome e a localização do ficheiro TXT da carta."
txtfile "txt" 1)))
(progn
(setq fichTXT (open fichTXT "w"))
(prin1 (type fichTXT))
(cond
((= Escala 25000)
(write-line (strcat NCarta "-your choice is 25000, line1") fichTXT)
(write-line (strcat NCarta "-your choice is 25000, line2") fichTXT)
(write-line (strcat NCarta "-your choice is 25000, line3") fichTXT)
;......an so on
)
((= Escala 10000)
(write-line (strcat NCarta "-your choice is 10000, line1") fichTXT)
(write-line (strcat NCarta "-your choice is 10000, line2") fichTXT)
(write-line (strcat NCarta "-your choice is 10000, line3") fichTXT)
;......an so on
)
((= Escala 5000)
(write-line (strcat NCarta "-your choice is 5000, line1") fichTXT)
(write-line (strcat NCarta "-your choice is 5000, line2") fichTXT)
(write-line (strcat NCarta "-your choice is 5000, line3") fichTXT)
;......an so on
)
)
)
)
(close fichTXT)
)
如果要使用If,则不要忘记用PROGN封装表达式:
(if (= Escala 10000)
(progn
(write-line (strcat NCarta "-your choice is 10000, line1") fichTXT)
(write-line (strcat NCarta "-your choice is 10000, line2") fichTXT)
(write-line (strcat NCarta "-your choice is 10000, line3") fichTXT)
;......an so on
)
)
此外,我将让CLOSE调用在“条件”代码之外,以确保文件已关闭。
当做
米尔恰 这是正确的。好极了
谢谢你,米尔恰。
:D:D 不客气!
当做
米尔恰
页:
1
[2]