问题标签 [carchive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
399 浏览

c++ - 序列化:CArchive 一个 CImage

我目前正在尝试弄清楚如何在 CArchive (JPEG) 中正确存储 CImage 文件。我目前的方法是以下(伪)代码:

...

我现在才回到 C++,过去只做了一点点。任何帮助将不胜感激。

非常感谢您提前。

0 投票
1 回答
112 浏览

c++ - 分层组织的二进制和文本文件的随机访问文件格式

一个 Windows 桌面应用程序,我所在的开发团队使用旧版 MFC CArchive 作为其应用程序文件格式,将文本文件和二进制文件序列化到磁盘和从磁盘中读取。该应用程序用于本地化这些文本/二进制文件中包含的字符串,CArchive 封装了一个翻译“项目”,因此它被生成为一个包含一个或多个这些子文件的整体文件。

这种文件格式在很多方面都显示了它的时代,我们正在寻求改变为更现代的东西。我们主要担心的是它速度慢并且占用大量内存;这不是随机访问,因此访问存档中的任意文件甚至只是生成目录列表都需要将整个内容加载到内存中,因此操作存档的空间和时间消耗取决于其大小,并且不可行存档的就地更新。

最后,扩展格式是痛苦的,因为它涉及到我们在代码中乱扔条件语句,这些条件语句根据存档的版本标记的值将某些字段(或不)序列化到存档或从存档序列化。

我花了一些时间寻找替代方案,其中最突出的是 ZIP/7Z 或 SQLite,因为 ZIP 已经内置了大部分文件管理/索引功能,而 SQLite 将是存储、检索的理想选择和搜索字符串,所以我认为这两种技术的某种组合可能是要走的路。

据我所知,诀窍是以这样一种方式组织或分区 SQLite DB每个文件,我不确定。

有没有其他人尝试过这样的事情,如果是这样,有什么建议吗?

谢谢

0 投票
1 回答
177 浏览

carchive - 使用 CArchive::GetObjectSchema 返回错误值

我这里有问题。在我的主应用程序头文件中,我有以下定义:

在我的应用程序中,我有一个CObject派生类,它在顶部有这个:

到目前为止,使用模式值时一切都很好。我承认以前我使用的值较小,例如170717.0.7 但我也试图将 beta 版本考虑在内,因此数字更大。

我的问题是,当我保存数据文件然后重新打开它时,它uSchema的值为40729

为什么?GetObjectSchema返回 aUNIT那么为什么我没有得到我指定的架构?

更新

如果我使用一个值,1718那么它会返回该值。

0 投票
0 回答
318 浏览

python - 在 Python 中读取 CArchive MFC 生成的序列化二进制文件

我有使用 MFC CArchive 从序列化 C++ 对象生成的二进制文件。我想编写 Python 代码来读取这些二进制文件。

Python或pyqt中可以读取snd反序列化文件的等效函数或类是什么?

我看过 QTQDataStream类,但我不知道它是否类似于 CArchive。

谢谢

0 投票
2 回答
274 浏览

visual-c++ - 如何获取 CArchive 中引用的文件的大小?

在使用 Perl、php 和汇编程序多年后,我才刚刚开始重新使用 c++,我正在尝试使用 Visual Studio 2017 和 c++ 创建一个简单的 MFC 程序,以打开二进制文件进行查看。我正在尝试在向导创建的代码中工作,但我被难住了。我知道这可能不是做我想做的事情的最佳方式,但我正在学习。

无论如何,我正在处理的代码是:

这在您使用标准 mfc 文件打开对话框 OnFileOpen 选择文件后调用。我想弄清楚的是:

  1. 我怎么知道调用中引用的文件的大小?
  2. 如何找出引用的文件的名称是什么?

这是我近 10 年来在这里提出的第一个问题,所以请保持温和,不要告诉我我如何没有正确格式化问题或其他事情。

0 投票
1 回答
272 浏览

c++ - 为基类和派生类实现 MFC 序列化

我有两个类:产品和派生果汁。我需要为这些类实现 MFC Serialazation。

为了存储类的对象,我有 Stock 类,它有 Product 类指针的容器。

在 Save and Load 方法中,我正在尝试实现序列化(根据本主题C++ MFC Serialization中的讨论)。

现在我遇到了问题。

从文件中读取对象时,Juice 对象的读取方式与 Product 类似(没有体积蚂蚁味觉字段)。Juice 之后对象的读取是从其余的 Juice 信息开始的,所以我在 Product 的 Serialaize 方法中得到了CArchiveException

例外

如果我只使用 Product 对象添加到 Stock 一切正常。我的错误是什么,我应该怎么做才能正确实现 MFC 序列化?

0 投票
2 回答
70 浏览

casting - 从 CArchive 读取 WORD 变量并同时转换为 int

这听起来很基本,但是:

目前,我将其读WORD入特定变量并将其转换。

我可以同时阅读和投射吗?

请注意,我无法序列化int. 它必须是 aWORD并强制转换为int。或者

0 投票
0 回答
95 浏览

python - 安装程序。如何将所有 python 代码放入 zip 文件而不是放入嵌入式 PYZ

这个问题与pyinstaller 可执行文件的差异更新有关(修改嵌入式 PYZ-00.pyz)

我想创建一个可分发的 pyinstaller,它可以很容易地进行热修复而不会浪费太多带宽。

嵌入 python 代码 .pyc 文件的标准 pyinstaller 方法似乎是将它们放入 PYZ 文件(ZLIB 存档)中,将 PYZ 文件添加到 CARchive 并将 CArchive 附加到可执行文件的末尾。

我认为,以下解决方案可能会对我有所帮助,但它会惩罚程序的启动时间,但这是可以接受的。

如果可能的话,我希望所有收集的 .pyc 文件都不会添加到 .PYZ 文件中,而是添加到普通的 .zip 文件中,然后将这个普通的 zip 文件添加(“收集”)到dist文件夹中。

我怎么能做到这一点?

另一个问题的答案https://stackoverflow.com/a/68754754/858675几乎就在那里,可以将所有 .pyc 文件打包成一个 .zip 文件。

但是,模块的值__file__会有所不同,我猜,如果依赖于,这可能会破坏一些现有代码__file__

0 投票
1 回答
72 浏览

visual-c++ - 从 CArchive 文件中检索信息

CArchive如果我们不知道文件中存储了什么类型的对象,有什么方法可以从文件中检索信息CArchive

我想知道信息以什么格式存储在CArchive文件中。

请帮我解决这个问题。

0 投票
0 回答
14 浏览

visual-c++ - 是否可以将 `<<` 和 `>>` 运算符添加到结构本身以序列化到 CArchive?

我有这个结构:

它是类中的成员变量:

我想将此结构序列化到我的CArchive. 目前我有存储:

类似的阅读:

是否可以向结构本身添加<<和运算符?>>


我是尝试operator<<链接答案中提到的新手,但我遇到了问题。例如,我试过:

在我的代码的另一部分:

但是当我编译时:

标识符 'BETHEL_SPEAKER_SERVICE_TALK_INFO_S' 7>D:\My Programs\2022\MeetSchedAssist\Meeting Schedule Assistant\SpecialEventManager.h(45,2): error C2805: binary 'operator <<' 参数太少 7>D:\My Programs\ 2022\MeetSchedAssist\Meeting Schedule Assistant\SpecialEventManager.h(46,3):错误 C2059:语法错误:'return' 7>D:\My Programs\2022\MeetSchedAssist\Meeting Schedule Assistant\SpecialEventManager.h(53,48) : 错误 C2238: ';' 前面的意外标记 7>D:\My Programs\2022\MeetSchedAssist\Meeting Schedule Assistant\SpecialEventManager.h(55,1): error C2143: syntax error: missing ';' 在 '}' 7>D:\My Programs\2022\MeetSchedAssist\Meeting Schedule Assistant\SpecialEventManager.h(55,1) 之前:错误 C2059:语法错误:'}' 7>AssignSelectedColumnDlg.cpp


到目前为止,这是完整的:

上面的第一个错误在第 44 行,即: