问题标签 [jedi-code-library]
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.
delphi - 为什么使用 JCL UNITVERSIONING?
JCL 库有一个条件定义UNITVERSIONING。我不知道为什么这个选项存在,也不知道如何使用它。我知道有一个叫 JclUnitVersioning.pas 的单元,但是找不到用处。
在真实的项目中在哪里使用它?
delphi - 如何在不使用引发异常的情况下使用 JCL 记录调用堆栈
背景
我们有一个问题,有时 Devexpress 中的网格会引发异常“Raised EConvertError: Cannot assign a nil to a TFont”。
但是为了追查真正的原因,我们已经将 cxEdit 中的 Font 更改为公共属性,而不是使用 get 和 set 方法。在这里,我想记录调用堆栈。
我的问题
通常,JCL 用于在出现异常时记录调用堆栈。但是如何在不使用引发异常的情况下记录调用堆栈并向用户显示一个关于此的对话框?
我找到了以下几行:
在 JclDebug 中,但我没有使用它。如果有人有一个如何获取调用堆栈的示例,我会很高兴。
问候罗兰·本特森
delphi - 访问可执行文件中包含的 JCL 调试信息?
有没有办法访问包含在可执行文件中的绝地调试信息(JDBG)?
Microsoft 调试工具已将我指向二进制文件中的堆栈链,我想知道这些偏移量对应的方法/过程/函数:
显然我在打电话SendMessage
,但我不知道从哪里来。可执行文件是使用嵌入在可执行文件中的 Jcl 调试信息构建的;但我不知道如何阅读它。
查看 中的一些函数和类JclDebug.pas
,一切似乎都是为了获取当前进程内部的调试信息,例如:
在我当前进程的地址空间中获取一个地址。它找出HMODULE
地址所在的位置,例如:
- 堆栈溢出.exe
- GDI32.dll
- USER32.dll
- 内核基础.dll
- dwmapi.dll
- UxTheme.dll
我在想我可以使用LoadLibrary
(返回一个HMODULE
)来手动加载一个模块,然后将它提供给一些通过模块图像挖掘以获取调试信息的类:
和
除非它受到保护。
我正在尝试(希望)我可以编写一个工具来选择二进制文件(*.exe),输入地址,然后返回
- 功能
- 方法
- 文件
- 电话号码
的偏移量。
例如
可能的?
编辑:我的第一个粗略和现成的方法是提取压缩map
文件,以便我可以查看它。但它没有保存为资源(?):
虽然通用工具会更有用:
更新:
我尝试使用TJclDebugInfoList
;我意识到数组属性ItemFromModule
将访问受保护的方法:
除了其中一个TJclDebugInfoSource
后代类中的代码尝试将其假定为虚拟地址的内容转换为偏移地址时出现下溢。
delphi - JEDI JCL 压缩库不会打开跨区存档文件
概括:
我无法让 JCL 压缩库打开任何跨区存档。它显示了 borlands 'windows.pas' 中定义的错误“(0000001) Incorrect Function”;
场景:
使用 JCL 压缩示例压缩的单个存档。
- 将在 JCL 示例和 7zip gui 中解压缩。
使用 JCL 压缩示例压缩的 7 个文件的跨区存档。
- 将仅在 7zip gui 中解压缩。使用 JCL 示例解压缩失败。
使用 7zip gui 压缩的单个存档。
- 将在 JCL 示例和 7zip gui 中解压缩。
使用 7zip gui 压缩超过 7 个文件的跨区存档。
- 将仅在 7zip gui 中解压缩。使用 JCL 解压失败
额外的信息
JCL 压缩演示是包含在 JCL 库中的演示。
JCL:2.2.1.3970
7zip dll:9.20.0.0 和 9.65.0.0
跨区存档集中的示例文件名:“Test Archive.7z.002”
尝试使用 .tar 和 .7z 压缩
使用了不同的文件大小。2048 字节和 2048KB
Delphi 2009。
这是我使用的代码。它来自 JCL 压缩演示。'TJclDecompressArchive(FArchive).ListFiles' 行发生错误。
JCL 示例确实知道这些文件并确实打开了它们。(图像中使用的 zip 格式。同样的问题)。
Prehaps有人以前遇到过这个?
谁能指出我正确的方向吗?
感谢您的时间。
斯科特 M。
delphi - Delphi JCL 7zCompression 可以用于在没有文件操作的情况下压缩/解压缩内存流吗?
我之前使用过 TJcl7zCompressArchive / TJcl7zDecompressArchive 进行存档操作。
现在我想直接压缩/解压缩内存中的流而不进行文件操作。但是,当在网上搜索 JCL 演示中的示例时,我找不到使用该库的方法。我确实找到了其他工具来做到这一点,但压缩率似乎不如 7zip。
任何人都可以给出一些指示或示例代码来展示如何实现这一点。非常感谢!
delphi - 在 Delphi XE 中使用 JCL 没有堆栈跟踪
我们有一个从 Delphi 2007 转换为 Delphi XE 的项目。在 2007 版本中,我们使用 JCL 的调试功能在出现异常时进行堆栈跟踪。事实上,我们使用了 JCL 的标准ExceptionDlg向导,它依赖于以下行来获取堆栈跟踪:
这个东西曾经在 Delphi 2007 中工作,但在 XE 中不再工作(它抛出一个“空白”堆栈)。
如果我们用经典替换那个东西
...它可以工作(因此我们有正确的设置 WRT 到地图等),但是(不幸的是)它显示了当前的堆栈跟踪(当然,这会导致异常对话框)而不是最后的堆栈跟踪例外。
任何想法如何解决这一问题?
TIA
delphi - 在 pre-vista 上使用 DwmIsCompositionEnabled (JwaDwmApi) 会导致错误
一直在尝试使用以下代码来检查是否启用了 Windows Aero:
但是,在 pre-vista 机器上这样做会导致应用程序崩溃,因为 DWMApi.dll 丢失。我也尝试过这段代码,但是它连续产生 2 个 AV。我怎样才能做到这一点 ?我正在使用 Delphi 2010。:)
delphi - 使用 JclCompression 压缩文件
我正在尝试使用JclCompression
JCL Demo 保存(压缩)一个 .zip 文件。当我按下“读写”选项卡上的“保存”按钮时,演示会调用:
执行时(FArchive as TJclCompressArchive).Compress;
会产生异常:“存档异地更新后无法替换至少一个压缩卷。” 有时当我按下保存按钮时,“应用程序没有响应”出现在表单的标题中,所以我必须关闭演示。
此代码是否正确,还是我必须更改它才能成功压缩并保存 zip 文件?是否有任何其他演示,JclCompression
以便我可以学习如何使用这些类?
除了这个问题,演示似乎工作正常。我可以打开一个 zip 文件、创建一个新的 zip 文件、添加文件、从目录中添加文件、提取选定的文件、提取所有文件以及获取 zip 文件属性。储蓄似乎是个问题。
我在 Windows 7 上使用 Delphi 2010。
delphi - TJclCompressArchive(绝地项目)。如何选择压缩格式?
在 Win7 x64 上使用 Delphi XE,拥有 Jedi 类库版本。3.45 和 7z.dll 版本。9.20,
如何选择上面显示的压缩选项作为带有“//”的注释?
绝地文档几乎为零,有人会遇到这样的问题吗?
使用 7z 尝试了一些不同版本的“作业”:tSevenZip、SevenZipVcl、SevenZip Api,但得出的结论是,在 Jedi 项目中使用 7z.dll 进行作业的最新版本。
delphi - JCL:用什么来代替 UnicodeIsWord?
在修订版 3256 和 3594 之间的某个时间,UnicodeIsWord()
从 JCL 的jclUnicode.pas
. 我们应该使用替代方法或替代方法吗?