明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5942|回复: 39

[源码] [原创]任意超大文件以原大小打包至VLX并极速释放(速度与硬盘写入速度一致)

    [复制链接]
发表于 2022-2-20 21:16 | 显示全部楼层 |阅读模式
本帖最后由 tryhi 于 2022-2-20 21:27 编辑

打包任意文件常规做法是转成十六进制(文变大100%)或者base64(变大33%)文本插入到lsp里面,导致编译文件变大而且加载变慢,释放文件必须内部先转码速度更加慢得离谱,发现一个从未有人用过的打包方法,打包后加载速度完全不受影响,释放速度更是快到离谱,达到硬盘的写入极限速度(好硬盘1秒达到1GB)。
方法如下:
1、将要打包的任意文件改后缀为TXT
2、代码里面用vl-get-resource读取,用保留函数_write-nb-str释放
3、用低版本
CAD(据说2018不行)的vlide编辑器用专家模式编译,选择改了后缀的文件进行编译

实测打包了一部100mb大小的小电影,打包后vlx文件为100mb,加载速度0.01秒,释放文件的速度0.05秒(好像固态硬盘单次写入都非常快)
传统转字符串方法打包100M的文件简直就不敢想象
以下是示例代码,abcd是改了后缀的mp4,改后的文件名为abcd.txt
(defun c:tt (/ f file)
        (setq file (vl-get-resource "abcd"))
        (setq f(open "c:\\abcd.mp4" "w"))
        (_write-nb-str file f)
        (close f)
        (princ"\n文件释放完成,在C盘根目录")
)




下面的附件是保留函数_write-nb-str,加载即可食用。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 9明经币 +9 金钱 +40 收起 理由
muwind + 1
USER2128 + 1 很给力!
utopio + 10 很给力!
tigcat + 1 很给力!
1028695446 + 1
Bao_lai + 1 很给力!
highflybird + 2 + 30 很给力!
xtjd + 1
自贡黄明儒 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-2-22 14:13 | 显示全部楼层
【转载】AutoCAD与AutoLISP能在数种操作系统版本下运行.不同的操作系统在ASCII文本文件中使用不同的约定符以表示行结束.例如,UNIX用单个换行符(LF,即ASCII码10),而MS-DOS,PC-DOS使用两个字符(CR/LF,即ASCII码13和10)来完成同一任务.为了便于开发在上述诸操作系统中,能以可移植方式工作的AutoLISP程序,WRITE-CHAR将换行符(ASCII码10)转换成当前操作系统使用的行结束符(或字符串).因此,在PC-DOS/MS-DOS系统中:
      (write-char 10 f)   返回 10
   但是却将字符串CR/LF(ASCII码13及10)写入文件.WRITE-CHAR不能将NULL字符(ASCII码0)写入文件.
发表于 2022-7-27 08:42 | 显示全部楼层
感谢分享                                                
发表于 2022-10-30 21:19 | 显示全部楼层
本帖最后由 KO你 于 2022-10-30 21:21 编辑

我想把一个VLX文件合并到别一个VLX文件里,但其中有个VLX文件是独立空间的,要怎样合并呢,请指教。

能帮忙把这个独立空间的VLX文件帮我转成不是独立空间的吗,能力有限,这个问题我一直找不到方法

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-2-20 21:47 | 显示全部楼层
感谢大佬共享!
发表于 2022-2-20 22:10 | 显示全部楼层
这个用处是啥?
 楼主| 发表于 2022-2-20 22:24 来自手机 | 显示全部楼层
rocking2008 发表于 2022-2-20 22:10
这个用处是啥?

打包任意文件,可能不是每个人都有这个需求,也不是唯一方案,但肯定是性能最高的方案

点评

好东西  发表于 2022-7-13 20:30
发表于 2022-2-20 23:18 | 显示全部楼层
感觉这个方法和VB释放资源文件的方式是一样的
发表于 2022-2-21 09:39 | 显示全部楼层
给海哥点赞
发表于 2022-2-21 10:06 | 显示全部楼层
可以同时打包多个文件到一个vlx不?
 楼主| 发表于 2022-2-21 10:08 | 显示全部楼层
轮回 发表于 2022-2-21 10:06
可以同时打包多个文件到一个vlx不?

可以的,就跟打包txt一样
发表于 2022-2-21 11:18 来自手机 | 显示全部楼层
太牛了,高人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-19 09:35 , Processed in 1.114422 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表