【发布时间】:2014-04-22 06:14:32
【问题描述】:
我正在做一个项目,我将一些信号(一维数组)记录到二进制文件中。我可以存储大量数据(通常是几个千兆字节)。现在我想重新加载这些文件。
我有两个视觉组件。一个称为概述,另一个只是一个普通的 Y/T 图表。概述应该让用户了解完整文件(大文件)中的内容,而图表仅显示文件的一部分,通常是在概述中选择的具有可调整大小的矩形/带的部分。
因为文件可能非常大,加载到内存根本不是最佳的,所以主要想法是仅将重要数据/可见数据加载到内存(最大几 MB)。因此加载和显示是根据用户需求完成的。如果用户放大图表,则需要使用文件中的更多数据点重新加载数据。
我的问题是如何绘制概览组件以最佳方式显示文件的全部内容(而不是真正从文件中加载所有样本)。假设我的文件大于 10GB,我想让用户了解文件中的内容,但我可以绘制最大值。概述组件上有 16k 个样本?
是否有任何方法可以在日志记录期间存储任何其他数据(如索引、较小的数据块、图像...)以供以后加载和绘制概览组件?目前我只存储样本,但添加其他数据不会有问题。您对此有什么经验以及您是如何做到的?
了解我在做什么:
【问题讨论】:
-
我真的不明白这个问题。只读取文件的一部分很容易。
-
文件中有大量样本。对于概述,我需要显示完整的文件,但加载完整的文件是没有意义的,而我无法在屏幕上显示所有数据,但我仍然必须向用户概述文件中的内容。对于图表部分,我仅显示/加载用户在带有红色矩形的概览窗口中选择的文件的一部分。然而,“最坏”的情况是选择完整的概览窗口,这意味着我必须重新加载完整的文件,但我又不能这样做......只是每第 N 个样本。我希望我能解释清楚。
-
并非如此。听起来很模糊。
-
假设我有一个超过 10G 样本的大文件。为了概述,我必须虚拟显示所有这些 10GB 样本,但有两件事需要考虑。首先是我不能只将所有样本加载到内存中,其次是在屏幕上绘制 10GB 点根本没有效率。基本上我必须绘制文件的波形,但我不需要所有数据,因为它只是一个概述。所以我必须将所有这些 10GB 虚拟地填充到 16kSamples 的概览缓冲区中。那么如何画出这样的波形呢?
-
"一些信号(一维数组)" 这不是太多的信息。答案很大程度上取决于文件的结构。请更详细地描述它(示例),或者如果尚未确定,请描述文件结构应具有的要求。
标签: delphi delphi-2010 c++builder binaryfiles binary-data