问题标签 [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.
c++ - 在 Embarcadero C++Builder XE5 中将 .png 加载到 TImage
我需要加载 .png 图像,因为我需要它的透明度。例如在 bmp 中转换它不是一个选项,因为我失去了它的透明度。我怎样才能做到这一点?
windows-8 - Windows 8 标准 VCL 风格/主题
我目前正在使用 Rad Studio XE5,我想根据标准 Windows 8 样式(不是现代 UI)创建自己的样式。我正在使用 Rad Studio 中称为位图样式设计器的内置设计器。但是,我似乎无法为 Windows 主题找到 vsf 文件。有谁知道我在哪里可以找到这个,或者它是否存在?谢谢。
c++builder - 如何将新的位图格式添加到 TBitmapCodecManager
我写了一个读写PPM文件的类(别问,我没选这种格式)。我希望它成为TBitmap
加载/保存系统的一部分。
有谁知道我可以如何添加这种支持?我真的必须编写/安装完整的编解码器吗?
解决方案:
通过 Remy Lebeau 的帖子,我设法编写并注册了一个编解码器。然而,所有需要的功能都没有记录,所以它需要一些试验/错误才能让它工作。
要注册新的编解码器,您需要使用这样的静态RegisterBitmapCodecClass
成员TBitmapCodecManager
。
编解码器需要定义这些函数:
该类Fmx::Surfaces::TBitmapSurface
没有任何文档痕迹,但 IDE 为我提供了可用的功能。我认为该Pixels[x][y]
数组用于读取/写入像素。
注册课程后,您可以像往常一样读取新的图像类型TBitmap->LoadFromFile("");
享受!
PS。那些投票结束这个的人,请评论为什么?如果我们不知道自己犯了什么错误,我们如何改进?
c++builder - .res 文件是否需要在源代码管理中?
在 C++Builder XE5 中。
我的理解是二进制文件MyProject.res
(由编译器在与.cbproj
文件相同的目录中创建)包含程序图标的编译版本和项目版本详细信息(尽管我的似乎也包含 XML 清单)。
但是这个信息也包含在.cbproj
文件和.ico files
; 如果我删除该.res
文件,那么它似乎会被重新创建,就像我下次打开项目时一样。
那么标记*.res
为不在源代码管理中是否安全?(我用git
)。和/或者是否可以在与目标文件相同的目录中生成它,所以它不会与源文件混合?
(这在 C++Builder 5 中肯定是不安全的——如果你删除了 .res 文件,那么它会抱怨找不到它,并且你丢失了你的图标)。
更新:这也适用于.tlb
文件吗?这似乎是根据.ridl
文件编译的,如果我删除它,它会自动重新生成。
com - 仅允许 COM 对象的单个实例
有没有一种好方法可以强制在任何时候只能创建我的 COM 对象的一个实例(由进程内服务器提供服务)?
目前我正在 TMyObjectImpl 的构造函数中创建一个 Windows 互斥锁;如果互斥体已经存在,那么我设置一个标志以将我的对象置于“死”状态:当设置此标志时,接口函数的所有实现都将返回一个错误代码。
我想抛出一个异常而不是像这样创建一个“死”对象,但是跨 COM 边界抛出 C++ 异常并不好,我不确定 COM 的 C++Builder 实现是否可以处理这个问题可靠。
实际上有两种可能的问题场景:
- 相同的过程创建两个 MyObject
- 两个不同的进程分别创建一个 MyObject
互斥锁可以防止这两种情况。
我的对象工厂函数是:
根据 C++Builder DocWiki,设置 Instancing 属性对进程内服务器没有影响 -ciMultiInstance
即使您指定ciSingleInstance
.
我的对象需要这个属性,因为它访问全局资源(例如写入特定磁盘位置的文件);对象的语义是这样的,一次只应该打开一个。我不希望添加对我的对象的多个实例的支持。
c++builder-xe5 - 在用户组件中设置父级
我在 XE5 中创建了两个用户组件。第一个是 TCustomPanel 的后代,它的目的是成为第二个组件的容器,它是 TCustomLabel 的后代。
容器。
所包含的。
到目前为止一切顺利,组件已安装,它们出现在调色板中,它们的属性出现在检查器中。但...
如果MenuPanel 放在窗体上,MenuLabels 就放在里面。如果它放置在窗体中的面板上,则菜单标签将放置在面板中。有趣的是,如果将放置在表单中的 MenuPanel 剪切并粘贴到面板上,则 MenuLabels 位于 MenuPanel 中。
我知道这与设置 MenuPanel 的父属性有关,但构造函数采用 TComponent *Owner 参数,即 Form。然而,面板可以放置在面板内,面板内,标签将放置在右侧。
有没有人遇到过同样的问题?
c++ - 使用 TEventLogger 在事件查看器中使用 C++ 记录事件
我想在我的应用程序执行期间记录错误日志。我正在尝试使用带有 C++ Builder XE5 的 VCL 表单应用程序将事件写入 Windows 事件查看器。我正在使用 Vcl.SvcMgr.TEventLogger 类。头文件中的代码是:
cpp文件中的代码是:
但在我的消息旁边,在事件查看器的错误描述中有一条消息:“找不到来自源 MySource 的事件 ID 0 的描述。引发此事件的组件未安装在本地计算机上,或者安装是腐败。” . 如何删除该描述并只写我想要的消息?我应该使用其他 C++ 类吗?我找不到有关此类的任何文档。使用事件查看器的想法是,当应用程序在具有受限权限的用户上运行时,他将无法写入文件,这意味着我不能只输入“.txt”文件。如果其他人有不同的想法如何制作有错误的日志,请分享!:)
在此先感谢,兹德拉夫科
delphi - 如何修复delphi XE5中的断言失败异常?
如何修复delphi XE5 RAD studio中的断言错误?在我的项目中,我有一个连接到火鸟数据库的 sqlconnection。当我将连接属性设置为 true 时,编译器会显示一个错误。
按下 OK 按钮后,IDE 突然关闭。我使用 XE5 作为开发 IDE。我不明白为什么会导致这个异常。谁能给我一个解决方案?
dll - 在 firemonkey 应用程序中使用 VCL dll
是否可以在 firemonkey 应用程序中使用 VCL dll?我正在尝试将 VCL dll 动态链接到我的 firemonkey 应用程序。GetProcAddress 返回 NULL;这可能是由于两个框架不兼容造成的吗?
是否需要将任何特定代码添加到我的 FM 应用程序才能使 VCL 正常工作?
谢谢和问候, 普里亚
constructor - 在构造函数中传递 __closure 函数
请参阅这个小脑袋里的男女同校片段:
现在来解决问题。
如果调用bar.SetByAssignment()
它工作正常,则函数指针已设置并从 Foo 正确调用。但在这种情况下,它作为公共变量公开。我希望它是私人的。
我想通过在构造函数中传递函数指针来简化类,并将其隐藏为私有,bar.SetByConstructor()
但在这里我得到编译器错误:
我认为这__closure
将使这成为可能。有没有可能,或者我只是做错了?