问题标签 [delphi-2006]

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 投票
3 回答
1554 浏览

delphi - 当我将 TPanel 添加到 TToolBar 时,我得到的是 TPanel 还是 TToolButton?

当 Delphi (2006) 进入量子状态时:我有一个看起来既是 TToolBar 又是 TPanel 的“东西”,这取决于你如何观察它。我想了解发生了什么。

以下是如何创建它以及会发生什么:

  1. 在 DFM 中

    • 添加一个名为 bar 的 TToolBar;
    • 在那个 TToolBar 中,放一个 TPanel。
  2. 在代码中和运行时:

    • 面板出现在按钮列表 bar.Buttons[] 中,假设在索引 i
    • bar.Buttons[i],从编译器的角度来看,是一个 TToolButton
    • bar.Buttons[i].ClassName = 'TPanel'
    • (bar.Buttons[i] is TToolButton) = true,但这是编译器优化对“is”的调用;
    • 确实 IsBarButton(bar.Buttons[i]) 对于函数 IsBarButton 是错误的(定义如下);
    • bar.Buttons[i].Name 是我在 DFM 中给 TPanel 起的名字
    • 在调试中检查值 bar.Buttons[i]:
      • 它有一个真正的 TToolButton 没有的属性“Caption”
      • 奇怪的是,它具有 TToolButton 的所有属性,例如 TToolButton.Indeterminate (=true)。

工具按钮:

所以 bar.Buttons[i] 既是又不是 TToolButton... 怎么了?

(底部的故事是我想将我的 TPanel 与真正的 TToolButton 区分开来。我可以用或多或少的黑客方式来做到这一点。我在这里提出这个问题的目的是更全面地了解这里真正发生的事情。)

问题:发生了什么?子问题:将 TPanel 添加到 TToolBar 是否合法?

0 投票
1 回答
2226 浏览

delphi - Register custom form in delphi 2010 with ToolsApi

I have custom form which is descendant from TForm. I used ToolApi to register custom module and add it to repository. So far so good. But when I click on File->New I can see my category with icon for my custom form but it is disabled. Icon is grayed and I cannot select it to create my custom form from menu and add it to project.

Do you have any suggestions and tips what is wrong and what should I try?

Click here to transfer my source code...

Thanks in advance.

Edit:

There is also listing of code for which I think it is important:

0 投票
2 回答
954 浏览

delphi - 为什么在使用 readbuffer 时使用 string[1] 而不是 string

我有这样的记录

如果我像这样使用 TStream 将数据读入其中,则会发生异常

但如果我使用下面的代码,它工作正常

那么使用 String 和 String[1] 有什么区别

0 投票
1 回答
478 浏览

delphi - 无状态 HTTP 会话中的进度反馈

我需要编写一个无状态服务器来执行远程方法。客户端使用带有 JSON 参数的 REST 来传递方法名称及其参数。服务结果后,会话关闭。我必须使用 Indy10、TCP/IP 作为协议,因此考虑使用 IdHTTPServer。

大型结果集由 Indy10 分块并分部分发送给客户端。

我现在的问题是:

如果服务器上的方法需要更长的时间才能产生结果,则它们会提供进度信息。这些是短消息。我怎样才能回信给客户?

到目前为止,我已经writeflush在服务器上使用过,但是客户端在返回完整的结果集(包括进度信息)之前等待请求结束。我该怎么做才能在客户端上显示/处理此类进度信息,同时保持连接打开以接收同一请求的更多数据?

0 投票
2 回答
817 浏览

delphi - 如何设置 Delphi 2006 可执行文件的代码页

我们在 Delphi 2006 中编程,使用 Multilizer 5.1 来翻译程序。现在我们必须在 Multilizer 中添加波兰语作为新语言。但是当我们打开我们的可执行文件时,Multlizer 说“代码页不支持波兰语”。

如果我们将区域设置调整为波兰语,则每当我们打开可执行文件时,区域设置都会翻转回原始设置,即荷兰语。也许我们应该在我们的项目选项中设置 CodePage 设置,但下拉列表没有给我们任何选项。

有任何想法吗?

0 投票
1 回答
1586 浏览

delphi - starting and stopping the screensaver

Should have been simple I would have thought. I want to force the PC to go into screen saver mode, and exit it when conditions I am checking in by D2006) app come true. It doesn't seem to work:

SystemParametersInfoResult is returning true in each case. The calls to SystemParametersInfo don't seem to have any effect. If I place the PC in SS mode by using the "Preview" button on the Control Panel Display Properties dialog, executing my code does nothing.

0 投票
2 回答
362 浏览

delphi - 为什么我在嵌入式 Windows XP 下运行的 Delphi 2006 应用程序出现内存错误

我有一个使用 FastMM4 的 D2006 应用程序(例如,它在 DPR 文件的 uses 子句的开头有“FastMM4”)。我知道 Delphi 无论如何都使用 FastMM4 作为它的内存管理器,但是下载的版本有更多的调试转储选项。

我最近尝试在运行 Windows XP Embedded 的单板平板型工业 PC 上运行该应用程序。该处理器是非英特尔“Vortex”芯片。该应用程序在启动时因内存错误而失败,然后退出并出现 FastMM4 关于在释放内存后访问内存的投诉。

从源代码中删除 FastMM4 的所有痕迹似乎可以治愈它 - 应用程序运行良好。

我的问题。导致此问题的 FastMM4 的下载版本是什么?我见过一些关于 FastMM4 和非 Intel 处理器崩溃的轶事,似乎与使用 ASM 代码有关。FastMM4 包含一个强制生成非 ASM 代码的指令,但这并不能解决问题。

我有点担心集成 D2006 版本的 FastMM4 可能仍然存在问题,但我还没有看到。

0 投票
2 回答
474 浏览

delphi - 为什么 {$ifopt FINITEFLOAT ON} 不编译?

我有构造:

在我的源代码中,它不会编译!这一定是一件愚蠢的事情。错误是:

E1030 无效的编译器指令:'$IFOPT'

在第一行,但它抱怨的是 FINITEFLOAT。除了 R+ 等单字母指令作为 IFOPT 的参数之外,您似乎无法指定任何内容。

我在这里错过了什么吗?

0 投票
4 回答
3172 浏览

database - 使用 Delphi 2010 从 BLOB 加载时出现 Jpeg 错误 #51,使用 Delphi 2006

我有一个在 Delphi 2006 中开发的旧应用程序,现在需要对其进行一些更改。

在这个应用程序中,我从 MsSQL“图像”字段加载图像,但是当我使用 delphi 2010 编译时出现错误:“引发异常类 EJPEG,消息为 'JPEG 错误 #51'。”

从数据库中获取图像的代码:

谷歌了一下,发现错误 #51 的意思是:JERR_NO_QUANT_TABLE,不管是什么意思。

当我用 Delphi 2006 编译时,相同的代码可以正常工作,没有错误,那么 D2010 出了什么问题?

0 投票
1 回答
4537 浏览

delphi - 如何在 TVarRec 和 Variant 之间进行转换?

是否有在 TVarRec 和 Variant 值之间转换的标准方法?

我想解析一个“const 数组”并使用这些值来填充 TMSQuery 中的参数。为此,我使用列名列表(从 TMSQuery.KeyFields 生成),并将数组中的值与 KeyFields 中的列名(按位置)匹配,然后使用列名使用 ParamByName 设置相应的参数.

下面的代码是我想出的,但 VarRecToVariant 似乎不是很优雅。有更好的解决方案吗?

笔记:

  • const 数组中的值取决于查询中的参数。调用者知道这些是什么,但使用数组的方法不知道预期的数量或类型。即我不能将方法更改为读取(名称:字符串;年龄:整数)。
  • 参数的使用顺序不一定与在 const 数组中指定的值的顺序相同。在示例中,keyFields 被指定为“Name,Age”,但查询在 Name 之前使用 Age。这意味着 Params[i].Value := keyValues[i] 将不起作用。我认为 VarRecToVariant 仍然需要,我试图避免)。