问题标签 [delphi-xe4]

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 投票
0 回答
697 浏览

delphi - Indy 多部分/表单数据示例

我有一个看起来像这样的表格:

如何在 Delphi (XE4) 中将这种类型的 POST 与 Indy 一起使用并从中获取结果?

0 投票
1 回答
148 浏览

delphi - 合并多个类的最佳实践

在下面的代码片段中,我有两个具有完全相同的过程名称的类。这些过程中的代码有很大的不同。是否有可能将这些类合并起来,以便于维护和未来的增强,或者我是否以可接受的方式解决这个问题?

我初始化这些类如下;

0 投票
1 回答
1233 浏览

ios - ARC (iOS) 下的 Delphi TThread 未发布

在 ARC 管理下使用 Delphi for iOS 终止线程的正确方法是什么?

举个简单的例子:

好的,按下 Button1 将产生一个线程。线程启动后,如果单击 Button2 将显示 RefCount 值为 3!嗯,1 是对我的 FThread 变量的引用,另外还有 2 个 TThread 在内部创建的引用……我深入研究了源代码,发现这里增加了 RefCount:

和这里:

嗯...线程完成后(在我的情况下,5 秒后),RefCount 将减少到 2(因为我已将 FreeOnTerminate 设置为 TRUE,但如果我不将 FreeOnTerminate 设置为 TRUE,则 RefCount 仍将为 3 )。

看到问题了吗?线程永远不会完成并且永远不会调用析构函数,如果我调用FThread := nil,那么 RefCount 应该从 2 减少到 1(或者从 3 减少到 2 在 case FreeOnTerminate = FALSE),并且线程永远不会在 ARC 下释放......

也许我错过了一些东西,因为我习惯于使用没有 ARC 的线程......那么,我在这里错过了什么?或者 ARC 下的 TThread 实现是否存在错误?

也许TThread的这个定义

应该是这样的

0 投票
1 回答
2064 浏览

delphi - 我可以为 TBytes 定义记录助手吗?

我正在使用德尔福 XE4。我尝试为 TBytes 定义一些辅助函数:

当我尝试使用新的辅助函数时:

我除了结果i3,但事实并非如此。我指的是 SysUtils.pas 中定义的 TStringHelper 具有类似的构造。

有什么我想念的吗?

0 投票
3 回答
11317 浏览

sql-server - 将 NULL 值传递给参数化的 delphi SQL 服务器查询

我正在尝试将空值传递给 TSQLDataset 参数。查询具有以下形式:

参数 B 可以为空,但也是一个外键。如果用户在此字段中输入内容,则 B 必须根据另一个表中的值进行验证。如果它是空白的,那么我希望它被忽略。我传入了 '',但这显然会产生 FK 违规错误。

我试过了:

..但随后我收到“dbexpress 驱动程序不支持 tdbxtypes.unknown 数据类型”错误。

我也试过:

..但随后出现“dbexpress 驱动程序不支持 tdbxtypes.variant 数据类型”错误。

不知道我做错了什么,任何帮助将不胜感激。我目前正在根据字符串是否填充来绘制一个参数列表,这很好用;它只是有点笨拙(在我的实际查询中),因为有很多参数需要验证。

我正在使用 Delphi XE4 和 SQL Server 2012。

更新:

感谢您的所有帮助,您的建议一直都是正确的,这是导致“dbexpress 驱动程序”错误的其他原因。我正在创建一个“灵活”参数列表以解决我的问题,这导致了异常:

...想法是,如果 B 为空白,则该参数将不会在查询中“列出”。

这不起作用,或者我的实现不起作用(不知道为什么,我显然在某处遗漏了一步)。

无论如何,工作代码:

0 投票
1 回答
540 浏览

delphi - Delphi XE3 第三方VCL 组件在XE4 中?

我使用 Delphi XE3,我想迁移到 Delphi XE4。我可以在 XE4 中使用与在 XE3 中使用的相同的第三方组件吗?在以前的版本中发生了许多变化,这排除了使用以前版本的第三方组件。

0 投票
1 回答
373 浏览

string - 为什么 TPageProducer 不从字符串中删除引号?

我正在尝试调试仅在我的大型应用程序(在 XE3 中运行良好)在使用 XE4 编译后运行时才出现的行为。这个问题似乎导致一些引用的字符串(例如“MyString”)即使在 Web.HTTPProd 中的 TPageProducer 被“取消引用”之后仍保留它们的引用。例如,考虑下面的代码,它是从这个 Delphi 源单元 Web.HTTPApp 的一小部分摘录:

我在使用 TPageProducer 时看到了这个调用,我可以看到我的良好源字符串进入上面的 ExtractHeaderFields 例程,然后进入“DoStripQuotes”函数。进入 DoStripQuotes 并观看“结果”表明它不会改变,即使调用 Result.Remove (以剥离报价)。当我将此“DoStripQuotes”例程用于一个简单的测试应用程序时,它不会编译,告诉我“Result.anything”是不允许的。我假设结果,虽然它被定义为“字符串”,但它必须是 Web.HTTPProd 上下文中的另一种类型的字符串。

所以我开始想,这可能与我听说过的“不可变字符串”有关。我读了这个SO question,虽然我明白了要点,但我可以提供更实用的建议。

具体来说,我想回答以下问题:

  1. 如果允许使用表示法 Result.Length,什么类型的“字符串”是“结果”?
  2. 有没有办法告诉编译器对一个单元使用“XE3”兼容性?(这可能让我看到问题的根源)。我试过 {$ZEROBASEDSTRINGS ON} / OFF 但这似乎会造成更多的混乱,我不知道我在做什么!

谢谢你的帮助。

稍后编辑:正如在下面接受的答案中指出的,这是 VCL 单元 Web.HTTPApp.pas 中的一个错误,它应该在第 2645 行周围的两个地方读取“Result := Result.Remove(I,1)”而不是“Result.Remove(I,1)”。删除(I,1)"

0 投票
1 回答
2328 浏览

delphi - Delphi XE4 动态面板对齐顺序

我有一个 Firemonkey 应用程序。动态添加一些从 TPanel 派生的对象

但是,最后一个对象最终在顶部,所有其他对象都在正确的位置。

例如

当我想要

我试过 alBottom、alMostTop[ 等,但都有类似的问题。

我该如何解决?

干杯,

马丁。

0 投票
2 回答
2908 浏览

delphi - Firemonkey Style Designer 中另一个 ListBox 中的 ListBox

我想制作一个非常复杂的界面,其中一个 ListBox 在另一个 ListBox 中。首先,ListBox1 的所有元素都从 Firemonkey 的样式设计器中获取样式“CustomItem”:

然后,在样式“CustomItem”中还有另一个 ListBox(“ListBox2”)。

如何访问此 ListBox2 的“StyleLookup”属性?

你知道Firemonkey是否支持它?

谢谢你。

0 投票
0 回答
206 浏览

ios - 播放流德尔福 XE4

我使用 Delphi XE4 (iOS) 想要播放一个流实时音频,使用端口和 ip。这个怎么做?

在本地播放音频只需分配组件 filemane MediaPlayer1.FileName: = GetHomePath PathDelim + + 'Documents' + + PathDelim 'soundsample.mp3';

问候莱昂纳多