标签: c++builder-xe2

在FireMonkey中锚定GUI组件

刚刚开始测试FireMonkey,无法找到制作动态大小/定位组件的方法.

VCL有Anchor属性,FM没有.

有人看到我错过的东西

更新:

FM中没有简单的锚定功能.您必须创建TLayouts并对齐它们,然后将控件放在面板中以使它们"粘住".如果您使用的是旧版本的Builder或Delphi,这将与我们以前与TPanels相同.

delphi c++builder delphi-xe2 firemonkey c++builder-xe2

7
推荐指数
3
解决办法
3535
查看次数

C++ Builder XE2,TXMLDocument'DTD被禁止'

当我尝试使用DTD读取XML文档(eagle文件)时,我收到错误:

Project xx引发异常类EDOMParserError并显示消息'DTD is prohibited'

XML标头如下所示:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
Run Code Online (Sandbox Code Playgroud)

如果我删除第二行...

<!DOCTYPE eagle SYSTEM "eagle.dtd">
Run Code Online (Sandbox Code Playgroud)

......一切正常

在一些谷歌搜索之后,似乎MSXML解析器默认情况下将一个名为'prohibitDTD'的选项设置为true(在早期版本中它是假的).

但是,似乎无法从TXMLDocument类将此选项设置为false.一个解决方案似乎是重新编译.pas库或使用CoCreateInstance()自行创建接口.

我在Delphi中看到的所有示例都有将这些示例转换为C++ Builder的困难.

有谁知道如何使用C++ Builder XE2读取DTD XML文档?

我的示例代码......

#include <xmldoc.hpp>

_di_IXMLNode XMLObject;

TXMLDocument *XMLDocument = new TXMLDocument(this);
XMLDocument->LoadFromFile(fileName); // <----- Exception EDOMParserError
XMLObject = XMLDocument->DocumentElement;
Run Code Online (Sandbox Code Playgroud)

谢谢...

xml vcl dtd txmldocument c++builder-xe2

6
推荐指数
1
解决办法
3067
查看次数

在C++ Builder XE2中重命名VCL Form类

在工作中,我们有一个相当大的C++ VCL表单应用程序.它汇编在Embarcadero XE2,但可以追溯到很多年.我需要在这个应用程序中添加一个新表单.

当您执行"文件>添加新> VCL表单"时,将创建一个表单,其中包含类名称TForm1.还创建了一个指针,如下所示:TForm1 *Form1

出于显而易见的原因,我想重命名表单和指针,说TStuffForm*StuffForm.问题是我无法让它工作!

对于那里的任何实际XE2用户:这样做的规范方法是什么?

我已经尝试通过仔细替换字符串直接在代码中重命名,但它不起作用.IDE疯了,并向我发出多个模态弹出窗口抱怨我丢失了TForm1类.这太令人不快了,我放弃了.

我也尝试了IDE中的重构功能,但这也没有用.所以现在我有点卡住了.

c++ ide vcl c++builder c++builder-xe2

4
推荐指数
1
解决办法
1307
查看次数

在调试器中每次运行后都需要重新启动C++ Builder XE3,或者在下次运行时应用程序崩溃

这有点奇怪,我似乎只在Windows 7上看到这一点(当我在Windows 8中构建应用程序时,似乎没有发生这种情况).我通过XE3使用C++ Builder XE看到了这一点.我将编译一个应用程序(静态链接包和rtl),然后从调试器运行它.如果我然后对代码进行更改并尝试重新编译并运行应用程序,则编译似乎没问题,但是当应用程序尝试启动时应用程序崩溃.如果我关闭C++ Builder并重新打开它,那么强制它通过重建所有进行重建,或者进行一些微小的更改它编译并运行正常.每次都是这种情况.我曾尝试过去切换到动态链接rtl和"出现"以使问题消失但我不确定这是否是一个可靠的假设.有谁见过这种行为,有没有人知道如何解决它.

编辑: 崩溃发生在我的任何代码之前.这是调用堆栈:

007d17b3; __delayLoadHelper2
007d7efa; __imageBase
007d308b; __wstartup
Run Code Online (Sandbox Code Playgroud)

顺便说一句:这个项目没有延迟加载dll.

crash c++builder access-violation c++builder-xe c++builder-xe2

3
推荐指数
1
解决办法
751
查看次数

在C++ Builder XE2中使用TDictionary

目前我想TDitionary在C++ Buillder XE2中使用

在我阅读文档后,我认为应该很容易,但我甚至无法创建TDictionary对象......

我的代码:

#include <vcl.h>
#pragma hdrstop
#include <Generics.collections.hpp>
#include "TDictionaryTest.h"

#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;

void __fastcall TForm2::FormCreate(TObject *Sender)
{
    TDictionary__2 <String, String> *Dir = new  TDictionary__2<String, String>(0);
    delete Dir;
}
Run Code Online (Sandbox Code Playgroud)

错误消息:

[ILINK32 Error] Error: Unresolved external '__fastcall           System::Generics::Collections::TDictionary__2<System::UnicodeString,   System::UnicodeString>::~TDictionary__2<System::UnicodeString, System::UnicodeString>()'  referenced from ...\PRACTICE\C++\WIN32\DEBUG\TDICTIONARYTEST.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall System::Generics::Collections::TEnumerable__1<System::Generics::Collections::TPair__2<System::UnicodeString, System::UnicodeString> >::~TEnumerable__1<System::Generics::Collections::TPair__2<System::UnicodeString, System::UnicodeString> >()' referenced from ...\PRACTICE\C++\WIN32\DEBUG\TDICTIONARYTEST.OBJ
[ILINK32 Error] Error: Unresolved external 'System::Generics::Collections::TDictionary__2<System::UnicodeString, System::UnicodeString>::' referenced from ...\PRACTICE\C++\WIN32\DEBUG\TDICTIONARYTEST.OBJ
[ILINK32 …
Run Code Online (Sandbox Code Playgroud)

c++ dictionary c++builder c++builder-xe2

3
推荐指数
1
解决办法
2793
查看次数

使用枚举类的未定义符号

这可能是一个微不足道的问题,但我无法克服枚举类数据的问题:

enum class enumTest
{
   VALUE0 = 0, VALUE1 = 1, VALUE2 = 2
};

void __fastcall TForm1::Button1Click (TObject* Sender)
{
int a = VALUE1;
}
Run Code Online (Sandbox Code Playgroud)

我得到:错误:未定义的符号:'VALUE1'

将枚举类枚举更改为:

enum //class enumTest
Run Code Online (Sandbox Code Playgroud)

编译器正常工作.

不幸的是我不能这样做因为它被定义到TLB/OCX包含文件中,就像许多其他声明一样.这种情况发生在不同供应商的不同类型的OCX上.

c++ enums c++11 c++builder-xe2

2
推荐指数
1
解决办法
1700
查看次数

#include <file> #include <file.h> - 有什么区别?

可能重复:
<string>和<string.h>之间的区别?

我的具体示例使用以下子句:

#include <string>
Run Code Online (Sandbox Code Playgroud)

如果我使用以下条款

#include <string.h>
Run Code Online (Sandbox Code Playgroud)

编译器以错误结束

[BCC32错误] utils.cpp(173):E2316'getline'不是'std'的成员

utils.cpp文件中的第173行如下:

while(std::getline(in, line, '\n'))
Run Code Online (Sandbox Code Playgroud)

我认为这两个条款没有区别.现在我很困惑.这两个条款实际上包含哪些文件?可以说,我的C++ Builder安装程序目录为C:\ Program Files\RAD Studio\9.0,包含文件位于子目录C:\ Program Files\RAD Studio\9.0\include中.

c++ include c++builder-xe2

0
推荐指数
1
解决办法
842
查看次数