Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用哪个小部件将硬盘扇区显示为十六进制?_C++_Qt_Editor_Disk - Fatal编程技术网

C++ 使用哪个小部件将硬盘扇区显示为十六进制?

C++ 使用哪个小部件将硬盘扇区显示为十六进制?,c++,qt,editor,disk,C++,Qt,Editor,Disk,我想知道winHex之类的实用程序,它们是磁盘编辑器 . 它们访问硬盘&用大约2TB的整个硬盘的十六进制表示数据。 他们如何在一个滚动区域中实现这一点,并在该区域中提供撤消功能。。。。 应该使用哪个小部件来显示如此大量的数据。???? 我想在QT中创建这个应用程序 他们如何在单个滚动区域中实现这一点 它不是包含整个磁盘的“单个滚动区域”。它是一个滚动条,为您当时显示的任何磁盘内容动态生成内容 只需根据滚动位置计算位置(除非您的屏幕有10000像素高,否则您将无法将光标精确放置在所需的磁盘扇区上)

我想知道winHex之类的实用程序,它们是磁盘编辑器 . 它们访问硬盘&用大约2TB的整个硬盘的十六进制表示数据。 他们如何在一个滚动区域中实现这一点,并在该区域中提供撤消功能。。。。 应该使用哪个小部件来显示如此大量的数据。???? 我想在QT中创建这个应用程序

他们如何在单个滚动区域中实现这一点

它不是包含整个磁盘的“单个滚动区域”。它是一个滚动条,为您当时显示的任何磁盘内容动态生成内容

只需根据滚动位置计算位置(除非您的屏幕有10000像素高,否则您将无法将光标精确放置在所需的磁盘扇区上)

还提供了撤消功能,其中

我希望(我没有看过代码)撤销功能是通过在某种容器中保存“地址更改,旧值”来完成的。与撤消任何其他大型数据集的信息的方式几乎相同

应该使用哪个小部件来显示如此大量的数据

一个显示文本并允许您截取重画并在每次重画操作中提供您自己的数据的程序。恐怕我对QT不太了解,所以无法就细节提出建议

显然,您没有涉及的一个因素是“如何在已装入的情况下以读写模式打开/装入整个磁盘”-我不确定它是否允许这样做,但如果允许,我希望涉及到一个磁盘筛选器驱动程序,该驱动程序具有“横向”接口,允许在文件系统的后台进行更新

编辑:在回答评论中的问题时:

有两种选择,一种是在数据更改时写入磁盘。在这种情况下,代码需要记住所有原始值,并在用户执行
undo
操作时恢复它们。另一种方法大致相同,即存储所有编辑(“将值从1000更改为05”),然后在要求显示某些内容时,在实际显示操作之前处理显示范围内的任何编辑

显然,如果有人决定玩“键盘上的猴子”很多小时(几周、几个月),用相当随机的内容填满整个磁盘,那么在不耗尽内存的情况下“记住”所有这些内容将是一个问题,因此您可能需要“我的内存不足,无法存储撤消信息,是否要保存到目前为止所做的操作?”键入选项


也可以考虑一个“相同值存储在一个大截面”类型的压缩(例如,如果你有一个从A到B的值x填充,你简单地存储“从A到B,我们已经填充X”,而不是存储,潜在地,许多兆字节的“a= x,a+1=x,a+2=x…b-1=x,b= x))。.

感谢我们的建议…请考虑一下,当显示动态生成的部分时&我编辑了数据并再次滚动,那么未保存在磁盘上的数据将在下一个动态生成的内容出现在编辑旧数据的位置时被清除。那么,如何以最快的速度显示编辑的数据呢获得旧数据相同位置的滚动Ex:I将偏移位置1000处的值“AA”更改为“05”。Ex:I将偏移位置1000处的值“AA”更改为“05”。然后,要转到偏移位置50,00,00,00,滚动区域必须刷新偏移位置1000的数据,即“05”(编辑)然后我将偏移位置50,00,00,00处的数据从“BB”更改为“08”。现在,如果向上滚动,则滚动事件必须动态加载偏移1000的值,该值应为我已编辑的“05”,但它将显示“AA”,因为“05”未保存……如何处理此问题??