问题标签 [delphi-6]
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 - 用 GDI+ 替换 StretchDIBits(在将图像绘制到打印机的画布时)
我的应用程序是在 Delphi 6 中开发的。由于后台处理和大量数据(它消耗大约 60MB - 120MB 的物理内存),这是一个资源密集型应用程序。此应用程序的功能之一是创建条形码图像并打印它们。如果用户继续生成条码,那么至少十分之一的条码中有缺失的行。
我能够使用 TExcellenImagePrinter 组件解决此问题。但是,它大大降低了性能。此解决方案被我的客户拒绝,因此,现在我尝试用 GDI+ 替换 WinAPI StretchDIBits 调用。
原始源代码如下:
正如乔在 embarcadero 论坛 ( https://forums.embarcadero.com/thread.jspa?messageID=471501#471501中所建议的那样,我从 ( http://www.progdigy.com/?page_id=7 ) 获得了 GDI+ 标头)。
我修改了我的源代码如下:
创建了一个 TGPGraphics 类的对象并将打印机的句柄分配给它。
gp := TGPGraphics.Create(Printer.Canvas.Handle);
创建了一个 TGPBitmap 类的对象并将条形码图像分配给它。
bmp := TGPBitmap.Create(Info^,Image);
Info 是 TBitmapInfo 并且 Image 是一个指针。
- 将打印机的尺寸分配给TGPRect 记录的实例矩形
调用 DrawImage 函数:
gp.DrawImage(bmp,rect);
但是,在进行这些更改后,打印机的输出中会显示空白图像。你能指出我是否遗漏了什么或者我的实施是错误的。你能提供任何关于这方面的指示吗?
c# - 使用 COM 端口与硬币兑换器交互
我有一个硬币兑换器MEI Cashflow E7900
和一个 MDB 适配器,用于将设备连接到串行端口。卖给我适配器的商店还提供了一个测试应用程序,它是用 Delphi 编写的,用 Borland Delphi v6.0 编译。它工作得很好,但我的代码出于某种原因没有。
当您使用 MDB 时,您必须每 200 毫秒发送POLL
一次命令。如果一切正常,硬币兑换商会发送ACK
. 当我使用 Delphi 应用程序发送它时,会话如下所示:
=> 0x0B* 0x0B(星号表示奇偶校验设置为标记。默认奇偶校验为空格)
<= 0x00
所以一切都很好,这就是我所期待的。当我POLL
使用 C# 应用程序发送时,它就像:
=> 0x0B* 0x0B
<= 0x3F 0x00
有时,硬币兑换商发给我0x3F 0x11
之后POLL
毫无意义,没有像这样的任何有效回复。当我得到这样的响应时,我运行 Delphi 应用程序,它得到了一个有效的ACK
响应。我正在使用 COM 端口嗅探器来确保发送的数据没有任何差异,包括端口配置本身,并且我不断收到不同的响应。
下面是测试应用程序(Delphi)的源代码:
此处提供完整的代码清单,但此处提供的代码应该足够了。
我的代码(C#):
使用 Delphi 应用程序的轮询命令:
使用我的应用程序轮询命令:
收到的数据似乎几乎相同,除了0x3F
在开始时。但是设备的行为也不同,它似乎没有连接到 PC,当我使用 C# 应用程序时显示“机器禁用”,当我使用 Delphi 应用程序时显示“状态正常”。这可能是因为 .NET Framework 而发生的吗?任何用于 COM 端口交互的库名称都可以使用。
我有想法,为什么我得到不同的反应。也许我希望这里有人能帮助我。提前致谢。也感谢您阅读这个巨大的问题。
sql-server - Delphi TADOStoredProc / D6 和 RAD Studio XE2 最近的故障
感谢任何可以提供帮助的人...
背景:
我有一个应用程序在 Borland Delphi v6 中编码并且仍然受支持。最近,我遇到了 TADStoredProc 类无法执行存储过程的问题。这段代码之前已经稳定了好几年,从未被修改过。
我可以在请求上配置超时,这是受尊重的,但是存储过程调用永远不会运行,即使超时时间很长。应用程序只是挂起,或因超时异常而退出。(我知道服务器没有负担过重,并响应同一客户端发起的其他 SQL SELECT 请求。)
我知道D6很旧。我确实有一个使用 Embarcadero RAD Studio XE2 的单独环境,在那里我设法构建了相同的项目,但仍然存在相同的问题。... 只想确认一下。
去哪儿?
- 请查看提供的代码,看看是否有更好的方法来做事。(也许 MSSQL 界面更挑剔,最近更新后?)我当然欢迎推荐。
- 是否有另一种方法可以插入应用程序,可靠且不需要 TADStoredProc?我已经完成了挖掘,但没有找到任何好的例子。
代码示例
感谢您的任何帮助,您可以提供。
delphi - 如何完成通过函数的无类型参数传递的记录?
我可以将“任何”记录类型传递给我的程序吗?
很多时候,我将“记录”与字符串一起使用。
要清除它们,我需要写:
问题是我如何通过任何类型的记录来清除它?
为此,我得到了这个提示:“表达式不需要初始化/完成”。
感谢您提供的每一个信息!
c++ - 在 Delphi 6 中使用 C++ DLL
我必须在 Delphi 6 中使用来自外部 C++ DLL 的编码函数。以下是提供的声明:
long <Function Name> (char *Data, long &Apply, char *ReturnVal, long &Size)
Data 是输入值,Apply 是布尔值(默认值:FALSE),ReturnVal 是来自 DLL 的返回值,Size 是 ReturnVal 的长度。
为了在 Delphi 6 中使用它,我编写了以下代码:
我在注释为“错误”的行中遇到访问冲突。
如果我将函数声明中的PChar替换为string,则访问冲突不会出现在同一行。它是在释放库时出现的。此外,iLength 参数的值已正确填充。
任何人都可以提供解决此问题的指示。
delphi - 为什么将 NIL 数组分配给 Variant 会导致在 Delphi 6 中返回非空数组?
考虑下面的代码,它在 Delphi 6 中编译和运行没有错误。当我恢复动态字符串数组时,我看到的不是在sa中看到的空数组,而是一个长度为 1 的数组,其中单个元素包含一个空字符串。为什么会这样?如何安全地将 NIL 动态数组分配给 Variant 并正确恢复它?这是代码:
delphi - Delphi 命令行构建 (DCC32) 错误:找不到 System.pas
Win7/x64 中的 Delphi 6 Professional,带有 c:\Delphi6 文件夹。
由于 ProjectGroups 出现 OM 错误,我们需要一个一个地构建项目。
为了提供更快的编译,我尝试使用 DCC32.exe。
我在这个网站上找到了一些关于“用 4 个选项扩展 dcc32.cfg 来设置库路径”的信息。我将它们中的每一个都设置为“Delphi/Options/Env.options/Library path”。
然后我尝试了:
dcc32.exe b“任何.dpr”
但我收到错误:找不到 System.pas。
我不明白——也许 dcc32.exe 也想构建基本的 pas 文件,或者我需要使用另一种格式。
我们需要构建每个项目,因为我们使用了许多条件指令。
感谢您提供的每一个信息和建议。
delphi - 在 Delphi 6 专业 IDE 中使用 DCC32 编译项目
IDE:德尔福 6 专业版。
我们有大项目。
我不能使用 Project Groups 来构建它们,因为我在构建时遇到了 OM 错误和奇怪的文件错误。
我的想法是我将使用 DCC32.exe 之前我与命令行参数(dcc32.cfg)发生了争执,但我认为我解决了它......
今天我尝试用它编译项目,但在第一个项目我得到了错误。
chdir c:\d\anyproject dcc32 -b any.dpr
该错误报告我找不到单位。我尝试在Delphi中编译,它是成功的。
所以我检查了这个问题。为什么以前的项目建筑是成功的,为什么这不是……?
然后我意识到这个 dpr 正在使用对子目录的引用,但并非所有文件都添加到项目中,其中更多是通过项目的“搜索路径”链接的。
但如果这是真的,那么这意味着 DCC32 没有使用项目的 DOF/CFG 文件!
所以问题在于 Delphi 合并所有内容以提供结果。它合并了全局搜索路径、项目的编译器指令、搜索路径等所有内容,并使用了项目的条件指令。
如果我理解得很好,DCC32 不用,只有 dcc32.cfg,而且我必须合并所有内容以进行编译,这是不可能的工作,因为我需要编写一个解析器来解释项目的参数,并合并与全局变量。
或者我误解了什么,问题是由我错过的其他事情引起的?
我在等你的建议!
感谢所有的想法、链接、信息等。
delphi - 如何调整任何类型的图像的大小?
我的项目的目标是在 Delphi 6 中调整任何类型的图像(jpeg/gif/png)的大小。
我尝试了很多方法,但我无法获得理想的解决方案。任何线索如何做到这一点?它可以是一个简单的命令行工具、一些代码或一个 Delphi 组件。
我试过 imagemagick:太重了:20 megas + dlls + 注册表。
我尝试了一些片段,但其中大部分仅适用于 JPEG。我需要 gif/jpeg/png
我尝试了graphicEX,但没有加载我的GIF
delphi - 在delphi中将十六进制str转换为十进制值
我在用 Delphi 将十六进制值的字符串表示形式转换为整数值时遇到了问题。
例如:
当我使用该功能时,$FC75B6A9D025CB16 给我 802829546:
但如果我使用 Windows 的 calc 程序,结果是:18191647110290852630
所以我的问题是:谁是对的?我,还是计算?
有人已经有这种问题了吗?