问题标签 [c++builder-xe5]

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 投票
2 回答
354 浏览

deployment - C++ Builder XE5 - 如何关闭部署管理器

如果这不是提出此类问题的正确地点,我深表歉意,但我无能为力,因为 Embarcadero 的论坛不允许我在那里发布任何问题。

我在 C++ Builder IDE 中启用了“部署”功能,以测试我的应用程序的依赖 dll 和 bpl 文件,当我完成后,我发现自己陷入了一个恼人的状态 - 我无法执行任何调试无需连接到远程电脑(使用他们的 PAServer)!这对我来说是一个巨大的问题,因为如果我不在办公室,我将无法调试我的应用程序,即我在客户的地方或家里进行现场服务。

我尝试删除部署配置文件,但每次编译我的项目时都会重新创建它,并且在运行编译和运行源代码时有一个 DEPLOY 命令。我必须等到与远程电脑的连接尝试超时才能通过手动单击我的应用程序的 .exe 来继续测试应用程序。

有什么方法可以关闭“部署”功能,以便我可以在本地机器上进行调试,就像在激活“部署”功能之前一样?

0 投票
0 回答
261 浏览

c++builder - 缩放 TFrame

TFrame在 C++Builder中缩放 a 的正确过程是什么?

我正在 PixelsPerInch=120(又名 Windows 字体大小 125%)中开发,但希望我的表单也可以在 PixelsPerInch=96 中工作(又名默认)。

我的主表单加载良好:创建 a 的 VCL 代码TForm包括检查设计 PPI 是否与运行时 PPI 不同,并在该点正确缩放所有内容。

但是,在加载 a 时TFrame,不会发生自动缩放。据我所知,我必须手动调用Frame1->ScaleBy(M, D);.

主要是可行的,但是它有一个错误(我将在下面描述),因此结果是一个未正确缩放的帧。

什么是创建 Frame 并让它在加载时缩放的正确方法,就像 Form 一样?

我目前正在使用以下内容:

然后当我想激活框架时,`f->Parent = fMain->Panel1; (*f)->ScaleBy(M, D);

我也尝试f->Parent = fMain->Panel1;在调用之前编写ScaleBy,基于 Frame 具有控件使用等的理论ParentFont,因此如果在缩放期间可以使用此信息可能会更好;但是,这会引入其他错误。


错误是,当调用ScaleBy一个 Frame 或一个 Form 具有TLabelwhichAutoSize=true和includeParentFont=false时,Label 在窗口上显示的位置比它应该显示的要高得多(甚至可能在窗口顶部之外)。AnchorsakBottom

我已经找到了问题所在:该TControl.ChangeScale函数包括对 的调用ScaleMargins,并且 Margin 属性有一个设置触发器,该触发器最终调用AlignControls父窗体,它将移动任何带有AutoSize=true.

通过单步Vcl.Controls.pas执行,我看到我的 Label 一开始可以正确缩放,但是当处理下一个控件(恰好是一个单选组)时,会AlignControls触发 ,这会更改我的 Label 的Top.

当通过重新缩放操作中途调用时,该AlignControls函数显然无法处理我刚刚描述的参数。TLabel

我还没有确定原因,但我认为这是因为父窗体或框架尚未缩放(该ScaleControls函数在缩放自身之前缩放所有子对象),因此它使用表单的旧Height来计算实际Top结果从做对齐到底部。

第一次加载表单时不会触发此效果,因为缩放代码会检查csLoading组件状态并禁用很多反作用效果,包括对AlignControls.

我还没弄清楚为什么只有在ParentFont=false.


我目前的解决方法是在 FormResize 处理程序中包含一行,该处理程序手动将有问题的标签与另一个有问题的标签重新对齐ParentFont=true(因此不会受到错误的影响)。

0 投票
2 回答
1462 浏览

delphi - 在写入文件时使用 IdHTTPServer 提供文件

我正在TIdHTTPServer使用该功能向客户提供文件ResponseInfo->ServeFile。这适用于“静态”文件:不是由其他进程写入的。据我从代码中可以看出,ServeFile 函数在内部使用 a TIdReadFileExclusiveStream,这使我无法读取正在写入的文件,但我还需要能够发送正在由其他进程写入的文件。

因此,我自己创建了一个 FileStream 并使用该ContentStream属性将其返回给客户端,但是我在客户端中得到一个 0 字节的文件(对于任何文件,无论是否写入),我看不到我的内容我错过或做错了。这是我在OnCommandGet事件处理程序上使用的代码:

此时的 ContentLength 属性具有有效值(即调用 ContentStream->Size 时的文件大小),这就是我想发送给客户端的值,即使文件在两者之间发生变化。

我试过删除 WriteContent() 函数,即 WriteHeader(),但结果是一样的。我搜索了一些示例,但我发现的几个与此代码或多或少相同,所以我不知道出了什么问题。大多数示例不包括 WriteContent() 调用,这就是我尝试删除它们的原因,但似乎没有任何区别。

附带说明:正在写入的文件需要 24 小时才能完成写入,但这是客户端所期望的:我只需要在请求时已经写入的字节(甚至更少是有效的)。这些文件永远不会被删除:它们只会越来越大。

有任何想法吗?

更新

使用 Fiddler,我收到了一些与协议违规有关的警告,这与此有关。例如,我得到:

Content-Length mismatch: Response Header indicated 111,628,288 bytes, but server sent 41 bytes

内容长度是正确的,它是文件大小,但我不知道我做错了什么使得应用程序只发送了 41 个字节。

0 投票
1 回答
1928 浏览

delphi - 带有 Unicode 参数的 C++ Builder TRESTRequest

我正在使用 TRESTRequest 从服务器获取数据。我需要用 Unicode 字符串值填充参数:"ôpen"。但是,使用此 Unicode 字符串作为查询参数调用 Execute 时出现崩溃。

我的代码:

如何正确地将“ôpen”添加到我的 URL?

0 投票
0 回答
110 浏览

firemonkey - How to add GUI components in FireMonkey

I have started a new FireMonkey Desktop Application in C++Builder XE5 Update 2. I changed the settings Use dynamic RTL to unchecked, and Link with runtime packages to unchecked (otherwise the program gives access violation on startup when run), but other than that, made no changes.

The program runs OK as a blank form with nothing on it. Based on internet tutorials, it looks like it should be possible to add controls to the form in the same way as a VCL application. However nothing appears in my tool palette:

Tool Palette

Only the "Frames" is there and no other controls. If I try to add a Frames it says No frames are available to insert. New frames may be created from the File|New|Other selections..

When I go to File|New|Other|FireMonkey Frame, the error occurs Error creating form: Access violation at address 0B6CD96E in module 'fmxdesigner190.bpl'. Read of address 00000000.

How do I add controls to the Form?

0 投票
1 回答
784 浏览

winapi - 在 C++Builder XE5 中创建 Win32 应用程序

在旧版本的 Borland C++Builder 中,您使用控制台向导来启动 Win32 程序。现在从 XE5 中消失了!我该如何开始??

0 投票
1 回答
5962 浏览

indy - Indy TCP 客户端示例?

C++Builder 中是否有 Indy 10 套接字的示例代码?

Indy Demos 页面上的两个示例链接是死链接,经过大量搜索后我无法找到任何示例代码。

我正在编写一个客户端,它将发送和接收 JSON 消息,不需要复杂的协议或 SSL。

我已经能够根据 TIdTCPClient 的成员函数进行猜测,以编写 id1->Socket->WriteLn发送由服务器接收但尚未弄清楚如何接收服务器响应的内容。

另外,是否有任何 Indy TCP 客户端的概述文档?在我看到的一些 Delphi 代码片段中,我看到id1.IOHandler.WriteLn了 IOHandler 的用途,我应该使用哪一个,IOHandler.WriteLn 和 Socket.WriteLn 之间有什么区别等的任何解释。

0 投票
1 回答
218 浏览

c++builder - C++Builder - 在应用程序启动时采取行动的正确方法

使用 C++Builder XE5。

我的主窗体有一个 Indy 阻塞套接字,我想在应用程序启动并显示主窗体后立即连接并阻塞它。

这样做的正确方法是什么?

在以前的版本或 C++Builder 中,OnCreate两者AfterConstruction都不可靠。通常我将这样的代码放在主.cpp文件中,就在 之前Application->Run(),但是在这里不合适,因为我要阻止(并依赖于TIdAntifreeze消息处理)。

我想到的一种方法是定义自定义窗口消息并将其发布给自己,但我想知道是否有“正确”的方式。

0 投票
3 回答
1980 浏览

c++builder - TCheckListBox 获取计数检查项

我有一个简单的问题。如何在不使用循环的情况下获取 CheckBoxListBox 中选中项目的计数?

0 投票
1 回答
1977 浏览

checkbox - Builder C++:带有复选框项目的 TTreeView

我需要创建一个带有复选框节点的树视图,如下图:

在此处输入图像描述

怎么做?

谢谢!