问题标签 [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.

0 投票
1 回答
541 浏览

delphi - Acrobat PDF 文件必须以类似缩略图的方式显示

可能重复:
Delphi 中的 PDF 缩略图

我正在 Delphi 6 中开发一个应用程序,用于在发送到 Acrobat Viewer 之前显示一些 Adob​​e Acrobat 文件,就像缩略图一样。

你能帮我提供一些代码来在 TImage 中显示文件吗?

提前致谢。

0 投票
0 回答
369 浏览

delphi - 如何从模态表单的上下文中捕获未处理的 Delphi 6 异常?

我最近遇到了一个模态表单在奇怪的时间消失(一个向导)的问题。经过漫长的调试会话,事实证明这是由于一段代码中未处理的异常导致的,该代码不是包含模态表单的单元的一部分。问题是由于 Delphi 的代码显示了模式形式。它将显示操作包装在一个 try finally 块中,该块在退出时隐藏了模态表单。当发生异常时,即使在模态窗体控件之外的代码中,异常处理程序也会在显示的模态窗体的上下文中引发它,从而触发前面提到的 try/finally 块。所以模态形式只是在一个看似奇怪的时间消失了。

我确实有报告错误的更高级别的异常代码,但我真的希望能够从模态表单的上下文中捕获错误,原因有两个。首先,通过在模态表单的上下文中显示错误来提供不那么刺耳的用户体验。其次,如果可能,在不退出模态表单的情况下尝试错误恢复操作。

有没有办法从该单元内捕获在模态表单单元之外发生的异常?如果您对此有策略,请告诉我您必须实施的任何细微差别,以避免键盘输入焦点和表单可见性和窗口状态出现奇怪问题,因为大多数解决方案通常最终无法使用。

0 投票
1 回答
592 浏览

delphi - TTCPServer onAccept 上的 ShowModal 导致应用程序挂起?

我正在使用 TTCPServer 在 delphi 6 中编写一个网络应用程序。在此组件的 OnAccept 事件中,我为另一个表单调用 showmodal。这导致挂起主窗体。我认为这是因为线程,但我不知道如何在这个事件中显示表单。我真的不得不这么称呼。我很感激任何答案。谢谢。

0 投票
2 回答
2589 浏览

delphi - Delphi 6 应用程序中使用 StrToFloat() 导致 EConvertError 的其他原因?

我遇到了一个奇怪的问题,它至少影响了我的 Delphi 6 应用程序的一些国际用户。这是场景:

  • 我的程序定期从充当 HTTP 服务器的外部设备请求状态报告。
  • 设备将状态报告作为响应文档发回,该响应文档具有一系列字段,以名称值对格式的管道字符分隔(例如 - field1=-0.437)。
  • 我将报告字符串拆分为字段,然后再次获取每个字段名称和数值。
  • 我使用 StrToFloat() 将浮点字段值转换为字符串格式,并将该函数的结果分配给Variant变量。

这在大多数 PC 上都可以正常工作,但是当我尝试对数值使用 StrToFloat() 时,我的一些国际用户会遇到EConvertError 。这是我的日志中错误消息的具体示例:

EConvertError:“-0.685”不是有效的浮点值

如您所见,-0.685一个有效的浮点数,但我得到了 EConvertError 异常。通常我希望看到小数点所在的逗号,或者其他一些特定于语言环境的标点符号问题,但在这种情况下,数字看起来很好。此外,据我所知,外部设备甚至没有设置字符集的选项。

那么关于 Delphi 6 和国际字符集的细微差别可能会导致这个问题,可能与用户的 Windows XP/Win7 字符设置有关?请注意,我在整个程序中使用标准的 Delphi 6“字符串”转换字符串,所以我看不出多字节字符集问题如何成为根本原因。有没有人遇到过这个问题并且知道该怎么做?

0 投票
2 回答
393 浏览

delphi - 网络通信 - 某些信息无法到达服务器

我目前正在编写的程序有一点问题。

首先让我解释一下它应该实现什么。

它与聊天程序非常相似,因此它基本上有一个信息类(我称之为 Packet),它存储有关某些事情的数据,这些数据发生在客户端窗口上。该程序本身由两个不同的客户端窗口和一个服务器窗口组成。(还有一个窗口可以打开其中的每一个,但现在这并不重要。)

所以客户在他的窗口上改变了一些东西并按下发送。

然后我的数据包将存储所有这些信息。它由昵称、文本、一些不同的数值(基本上是掷骰子结果)和“种类”变量组成。

有三种不同类型的消息,这个“数据包”能够发送。

  1. 一条普通的短信(完美运行。)
  2. 一个骰子消息,由 3 个骰子结果、一个难度值和一个天赋值组成。
  3. 另一个骰子消息,这次只包含一个骰子结果。

每当发送消息(并因此被服务器接收)时,程序就会读出它是什么类型的消息(通过 kind-variable),并根据消息的内容启动不同的步骤来处理消息。

聊天消息只是在聊天中显示并发送给每个客户端以显示在那里。这没有任何错误或其他东西。

骰子消息都有一个特殊的形状来显示。它基本上是以这种形状生成的聊天消息,以显示掷骰子是否成功。


现在我的问题来了:

我在 LAN 版本中测试了该程序(使用我的语言环境 IP),它运行良好。没有问题,没有错误。

但现在我请朋友帮我通过互联网测试它。端口转发工作,客户端能够连接。

现在用于发送消息。聊天消息:工作正常 Dice1-消息:只发送昵称和两个骰子结果。第三个骰子结果没有显示出来,其他所有信息都只是在那里留下一个空白区域,它应该出现在哪里。第二个骰子消息也是如此。它只显示骰子结果和昵称,但不显示任何其他信息。

如果它有助于知道,该程序是用 Delphi 6.0 编写的(是的,有点旧,但我已经习惯了这个程序,我对编程还不是很好。所以我用它来学习基础知识和编写我的第一个更大的程序,比如那个。)

数据包本身定义如下:

等等。然后消息指的是这样的信息:

所以..就是这样。我希望那里的任何人都知道问题出在哪里(或者更好的是,在这种情况下,LAN 和 Internet 之间导致问题的区别是什么)并且知道一种方法来帮助我解决这个问题。

提前致谢~

PS:服务器只需获取信息,以相同的方式显示它,任何客户端都会这样做,然后将其直接发送给每个客户端,每个客户端都会接收并显示它..以防万一这可能很重要。


编辑:

嗯,我认为信息本来就很好,因为“其他信息”并没有真正不同。

不过没关系~更多细节:)

“其他信息”都具有字符串 [255] 类型,无论如何其中一个是布尔值。

Dice1 -Type使用以下内容:

昵称、结果 1、结果 2、结果 3、难度、技能点、天赋(只是天赋的名称,掷骰子测试成功或失败)和一个名为“成功”的布尔值。

骰子2使用:

昵称、结果、难度、天赋(天赋的名称。不要误认为值^^)、天赋点(基本上是天赋的值减去掷骰子的难度)以及布尔值“成功”以及字符串 [255] 称为“种类”。Kind的功能在上面已经解释过了。

至于协议,我认为我没有使用任何特殊的协议。

我只是通过 SendBuf 和 ReceiveBuf 发送整个类 TPacket。我对编程很陌生,所以很抱歉我不能给你更多的信息:/

让我给你程序的代码,服务器用于接收和重定向 TPacket。

我希望我不会出错,因为我是用德语写的程序,所以我现在必须翻译它..^^

现在再次声明我的 TPacket .. 可能很重要

我希望这让它更容易理解..我不擅长解释,我想:/

但是,感谢您在这里欢迎我,我希望我不会打扰你们,并且也可以在任何情况下提供帮助!

0 投票
1 回答
1134 浏览

delphi - 如何获取应用程序中的所有类

我正在编写一个本地化应用程序,其中我通过 EnumResourceNames API 调用从应用程序资源中读取 DFM 信息。

但是,该函数返回我与 DFM 关联的表单的名称。我尝试从 FindClass 中获取类,但由于整个操作被编码在一个包中,FindClass 失败了。RegisterClass 例程从 exe 的初始化部分调用。

在 exe 项目中编写的代码中调用 FindClass 时工作正常。因此,我开发了自己的注册框架,在其中添加了所有表单类,但这真的很痛苦,因为我需要添加表单单元,然后将表单类传递给 RegisterClass 例程。

我希望是否有人可以提供一个简单的解决方案来获取可执行文件中的所有类,通过搜索类名可以从中创建对象的实例。

顺便说一句,我正在使用 Delphi 6 Update 2。

谢谢拉胡尔 W

0 投票
0 回答
503 浏览

delphi - 有没有办法将宽字符串传递给 TStringStream?

我有这个德尔福功能:

目的是检索一系列 RTF 格式的文本,将它们与其他文本连接起来,并将它们返回到单个 TStringStream 中,以便在 TRichEdit 中以表单的形式显示。

如何跳过“使用即时 RichEdit”并将生成的文本作为 TStringStream 发送?

0 投票
1 回答
13360 浏览

delphi - 如何在 Delphi Chromium Embedded 中按名称获取元素?

要从 TChromium 实例获取嵌入在当前 Web 文档中的特定 DOM 节点,使用其 ID,您可以使用 ICefDomDocument.getElementById()。但是如何通过 NAME 属性找到元素呢?Javascript 有 document.getElementsByName() 方法和 TWebBrowser(包装 IE)有一个类似的调用,但我不知道如何用 TChromium 做到这一点。我需要找到一些具有 NAME 属性但没有 ID 属性的 DOM 元素。我搜索了ceflib单元,没有看到任何可以做到的东西。

边问。如果有人有 TChromium“食谱”风格网站或文档的链接,我可以使用它。

更新:在等待答案时,我想出了以下代码来执行 getElementsbyName()。我想要比扫描整个 DOM 树更快的东西。如果您在代码中发现有问题,请告诉我:

0 投票
1 回答
726 浏览

silverlight - Chromium 和 Silverlight(德尔福)?

有没有人尝试过将 Silverlight 与 Chromium 集成?如果是这样,您是否知道列出使其工作的步骤的文档?我正在使用 Delphi 6 和 TChromium 组件。

0 投票
1 回答
1326 浏览

delphi - 如何在 Panel 内制作透明表单?

我需要在运行时在面板内创建一个部分透明的表单。

我怎么能做到这一点?