刚刚开始测试FireMonkey,无法找到制作动态大小/定位组件的方法.
VCL有Anchor属性,FM没有.
有人看到我错过的东西
更新:
FM中没有简单的锚定功能.您必须创建TLayouts并对齐它们,然后将控件放在面板中以使它们"粘住".如果您使用的是旧版本的Builder或Delphi,这将与我们以前与TPanels相同.
当我尝试使用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)
谢谢...
在工作中,我们有一个相当大的C++ VCL表单应用程序.它汇编在Embarcadero XE2,但可以追溯到很多年.我需要在这个应用程序中添加一个新表单.
当您执行"文件>添加新> VCL表单"时,将创建一个表单,其中包含类名称TForm1.还创建了一个指针,如下所示:TForm1 *Form1
出于显而易见的原因,我想重命名表单和指针,说TStuffForm和*StuffForm.问题是我无法让它工作!
对于那里的任何实际XE2用户:这样做的规范方法是什么?
我已经尝试通过仔细替换字符串直接在代码中重命名,但它不起作用.IDE疯了,并向我发出多个模态弹出窗口抱怨我丢失了TForm1类.这太令人不快了,我放弃了.
我也尝试了IDE中的重构功能,但这也没有用.所以现在我有点卡住了.
这有点奇怪,我似乎只在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
目前我想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) 这可能是一个微不足道的问题,但我无法克服枚举类数据的问题:
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上.
我的具体示例使用以下子句:
#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++ ×4
c++builder ×4
vcl ×2
c++11 ×1
crash ×1
delphi ×1
delphi-xe2 ×1
dictionary ×1
dtd ×1
enums ×1
firemonkey ×1
ide ×1
include ×1
txmldocument ×1
xml ×1