乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: SCaldeira

[编程交流] 如何创建txt文件

[复制链接]

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:38:06 | 显示全部楼层
线程的标题要求创建文件。。。
 
因此,您应该:
[列表]
  • 以读取模式打开文件-打开,
  • 解析每一行,直到文件结束(nil)-同时读取行(&R),
  • 将后缀附加到每行-STRCAT,
  • 将这些行存储到列表中-追加,
  • 完成后,关闭文件-关闭,
  • 以写模式打开文件-打开,
  • 解析所述列表并将项目记录到文件-FOREACH&WRITE-LINE,
  • 完成后,关闭文件;这也将保存它-关闭,
    问候,
    米尔恰
  • 回复

    使用道具 举报

    11

    主题

    40

    帖子

    29

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    55
    发表于 2022-7-6 08:41:57 | 显示全部楼层
    谢谢你,米尔恰。
     
    顺致敬意,
    回复

    使用道具 举报

    pBe

    32

    主题

    2722

    帖子

    2666

    银币

    后起之秀

    Rank: 20Rank: 20Rank: 20Rank: 20

    铜币
    211
    发表于 2022-7-6 08:44:26 | 显示全部楼层
     
    现在它有了意义。
     
    我想我问错问题了。
    回复

    使用道具 举报

    35

    主题

    2471

    帖子

    2447

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    174
    发表于 2022-7-6 08:46:18 | 显示全部楼层
    @斯伯泰拉:不客气!
    如果您在这段代码中遇到问题,只需将您编写的内容张贴在此处以获得进一步帮助。访问文件时不要忘记关闭文件。
     
    当做
    米尔恰
    回复

    使用道具 举报

    35

    主题

    2471

    帖子

    2447

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    174
    发表于 2022-7-6 08:51:25 | 显示全部楼层
     
    我也被帖子的标题搞糊涂了。
     
    当做
    米尔恰
    回复

    使用道具 举报

    11

    主题

    40

    帖子

    29

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    55
    发表于 2022-7-6 08:52:53 | 显示全部楼层
    我试过这么做,但没有成功。你能帮我找出错误吗?
     
    lisp代码:
     
    1. (defun C:d2 ( )
    2. (setq DCL (load_dialog "d2")) ;
    3. (new_dialog "CARTA2" DCL)
    4. (action_tile "IDCarta" "(setq NCarta (get_tile "IDCarta"))")
    5. (action_tile "25M" "(setq Escala 25000)")
    6. (action_tile "10M" "(setq Escala 10000)")
    7. (action_tile "5M" "(setq Escala 5000)")
    8. (action_tile "accept" "(done_dialog)") ;
    9. (action_tile "cancel" "(setq NCarta nil)(done_dialog)")
    10. (start_dialog) ; Inicia
    11. (unload_dialog DCL) ;
    12. ;----------------------------------
    13. (setq lspdir "E:\\CartasTXT\")
    14. (setq txtfile (strcat lspdir "notes"))
    15. (setq fichTXT (open (getfiled "Defina o nome e a localização do ficheiro TXT da carta." txtfile "txt" 1) "w"))
    16. (prin1 (type fichTXT))
    17. (if (= Escala 25000) (
    18. (write-line (strcat NCarta "-your choice is 25000, line1") fichTXT)
    19. (write-line (strcat NCarta "-your choice is 25000, line2") fichTXT)
    20. (write-line (strcat NCarta "-your choice is 25000, line3") fichTXT)
    21. ;......an so on
    22. (close fichTXT)
    23. ))
    24. ;----------------------------------
    25. (if (= Escala 10000) (
    26. (write-line (strcat NCarta "-your choice is 10000, line1") fichTXT)
    27. (write-line (strcat NCarta "-your choice is 10000, line2") fichTXT)
    28. (write-line (strcat NCarta "-your choice is 10000, line3") fichTXT)
    29. ;......an so on
    30. (close fichTXT)
    31. ))
    32. ;----------------------------------
    33. (if (= Escala 5000) (
    34. (write-line (strcat NCarta "-your choice is 5000, line1") fichTXT)
    35. (write-line (strcat NCarta "-your choice is 5000, line2") fichTXT)
    36. (write-line (strcat NCarta "-your choice is 5000, line3") fichTXT)
    37. ;......an so on
    38. (close fichTXT)
    39. ))
    40. )

    dcl代码:
     
    1. /* Dialog Box: carta2 */
    2. CARTA2: dialog { label = "Escala da Carta";
    3. :radio_button {key = "25M"; label = "Carta 1:25000"; }
    4. :radio_button {key = "10M"; label = "Carta 1:10000"; }
    5. :radio_button {key = "5M"; label = "Carta 1:5000"; }
    6. spacer;
    7. :edit_box { label = "ID da Carta "; key = "IDCarta"; width = 7; }
    8. spacer;
    9. ok_cancel;
    10. }
    回复

    使用道具 举报

    35

    主题

    2471

    帖子

    2447

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    174
    发表于 2022-7-6 08:58:04 | 显示全部楼层
    我会看看你的代码;同时,请编辑您的最后一篇文章,添加代码括号。
     
    当做
    米尔恰
    回复

    使用道具 举报

    35

    主题

    2471

    帖子

    2447

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    174
    发表于 2022-7-6 09:00:05 | 显示全部楼层
    我用COND重写了代码。此外,最好在尝试访问新文件之前验证用户是否为其提供了名称。
     
    1. (defun C:d2 ( / [color=red]DCL NCarta Escala lspdir txtfile fichTXT[/color] )
    2. (setq DCL (load_dialog "d2")) ;
    3. (new_dialog "CARTA2" DCL)
    4. (action_tile "IDCarta" "(setq NCarta (get_tile "IDCarta"))")
    5. (action_tile "25M" "(setq Escala 25000)")
    6. (action_tile "10M" "(setq Escala 10000)")
    7. (action_tile "5M" "(setq Escala 5000)")
    8. (action_tile "accept" "(done_dialog)") ;
    9. (action_tile "cancel" "(setq NCarta nil)(done_dialog)")
    10. (start_dialog) ; Inicia
    11. (unload_dialog DCL) ;
    12. ;----------------------------------
    13. (setq lspdir "E:\\CartasTXT\")
    14. (setq txtfile (strcat lspdir "notes"))
    15. [color=red] (if (and NCarta[/color]
    16. [color=red]          Escala[/color]
    17. [color=red]          (setq fichTXT (getfiled "Defina o nome e a localização do ficheiro TXT da carta."[/color]
    18. [color=red]                        txtfile "txt" 1)))[/color]
    19. [color=red]  (progn[/color]
    20.   (setq fichTXT (open fichTXT "w"))
    21.   (prin1 (type fichTXT))
    22. [color=red]   (cond[/color]
    23.    ((= Escala 25000)
    24.     (write-line (strcat NCarta "-your choice is 25000, line1") fichTXT)
    25.     (write-line (strcat NCarta "-your choice is 25000, line2") fichTXT)
    26.     (write-line (strcat NCarta "-your choice is 25000, line3") fichTXT)
    27.     ;......an so on
    28.    )
    29.    ((= Escala 10000)
    30.     (write-line (strcat NCarta "-your choice is 10000, line1") fichTXT)
    31.     (write-line (strcat NCarta "-your choice is 10000, line2") fichTXT)
    32.     (write-line (strcat NCarta "-your choice is 10000, line3") fichTXT)
    33.     ;......an so on
    34.    )
    35.    ((= Escala 5000)
    36.     (write-line (strcat NCarta "-your choice is 5000, line1") fichTXT)
    37.     (write-line (strcat NCarta "-your choice is 5000, line2") fichTXT)
    38.     (write-line (strcat NCarta "-your choice is 5000, line3") fichTXT)
    39.     ;......an so on
    40.    )
    41. [color=red]   )[/color]
    42. [color=red]  )[/color]
    43. [color=red] )[/color]
    44. (close fichTXT)
    45. )

     
    如果要使用If,则不要忘记用PROGN封装表达式:
     
    1. (if (= Escala 10000)
    2. [color=red] (progn[/color]
    3. (write-line (strcat NCarta "-your choice is 10000, line1") fichTXT)
    4. (write-line (strcat NCarta "-your choice is 10000, line2") fichTXT)
    5. (write-line (strcat NCarta "-your choice is 10000, line3") fichTXT)
    6.                                ;......an so on
    7. [color=red] )[/color]
    8. )

     
    此外,我将让CLOSE调用在“条件”代码之外,以确保文件已关闭。
     
    当做
    米尔恰
    回复

    使用道具 举报

    11

    主题

    40

    帖子

    29

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    55
    发表于 2022-7-6 09:04:59 | 显示全部楼层
    这是正确的。好极了
    谢谢你,米尔恰。
     
    :D:D
    回复

    使用道具 举报

    35

    主题

    2471

    帖子

    2447

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    174
    发表于 2022-7-6 09:05:04 | 显示全部楼层
    不客气!
     
    当做
    米尔恰
    回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

    QQ|关于我们|小黑屋|乐筑天下 繁体中文

    GMT+8, 2025-3-9 21:59 , Processed in 0.627565 second(s), 70 queries .

    © 2020-2025 乐筑天下

    联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表