3
|
David Mohaimin Moin · 技术社区 · 15 年前 |
![]() |
1
4
有:只需使用IDE的项目导入器:)
自从C++Builder 2009以来,我几乎不再遇到ILink了。我偶尔读到有人遇到内存不足的错误,但新闻组中有人发现了一种解决方法: https://forums.embarcadero.com/thread.jspa?messageID=140012&tstart=0#140012 还有,你可以读到 here 编译器得到了一个新选项(-cx)来控制它分配的最大内存量。
应该可以毫无障碍地工作。
是的,在Windows平台上,wchar_t通常是16位大的,这意味着它足以容纳unicodestring是的utf-16。
取决于代码的可移植性。在任何情况下,只要您只需要字符串类型,就使用“string”,而不是“unicodestring”。
首先,您不应该重复使用由旧版本的DCC生成的.hpp文件! 对于在Delphi中使用字符串类型的事件处理程序,必须使用UnicodeString。如上所述,只需使用“String”,您的代码就可以用于C++ Builder的ANSI和Unicode版本。
编译器不会转换字符串(这会与语言标准冲突),但ansistring和unicodestring都有char*和wchar_t*字符串文本的复制构造函数重载。也就是说,以下内容将起作用:
但是,这种方式不起作用的是整个printf()/scanf()函数;ansistring::sprintf()接受const char*,unicodestring::sprintf()接受const wchar_*。 如果您经常使用sprintf(),您可能会发现我的cbdeformat库很有用;只需阅读 my article on the subject . |
![]() |
2
2
您没有说明二进制元组格式的数据字符串的用途:它们是否需要存储Unicode?当我从d2007转换到d2009时,我只能保留系统ansi字符串的某些部分。 如果需要存储Unicode,则需要检查现有数据是否与UTF-8等格式兼容。如果存储在现有数据文件中的值的范围存在问题,那么我将让您的下一次升级对任何旧数据文件进行一次性转换,读取旧的ansisting数据并将其作为utf-8写回其他文件名或扩展名,或者修改适当的文件头数据。我已经对数据文件进行了很长时间的版本控制,只是为了允许这种处理更改。 我只是在启动一个BCB2010项目,所以不能对您的其他问题发表评论,但我确实很难将Delphi项目从D2007升级到D2009,尽管我可以通过编辑项目文件来解决这个问题,该文件只是XML。 祝你在转化过程中好运;-) |
![]() |
3
2
这由你决定。
不,不能将自动管理的事件处理程序更改为使用
不可以。如果声明一个字符串常量或不带L前缀的字符常量,数据仍将被解释为ANSI。这并没有改变。但是,您可以将ANSI数据传递给
如果元组需要8位字符,则必须确保任何结构声明和此类声明都使用
不,您必须事先知道字节的实际编码。如果您将内存地址传递给
就像所有以前的版本一样(除了从2006年到2007年的迁移),您拥有的任何第三方组件都需要为2010年重新编译,要么手动(如果您有它们的源代码)要么由它们各自的供应商重新编译。
对。这仍然适用。
.tlb文件不再使用。新系统现在操作.ridl(reduced idl)文件。在编译期间,.ridl直接在可执行文件的二进制资源中生成正确的类型库信息。没有生成.tlb文件。
我不记得CB2010(或CB2009,就此而言)是否可以直接使用预先存在的.tlb文件。我觉得他们做不到。但是,您可以通过tlibmp.exe运行.tlb文件,它将导出.ridl文件。或者,您可以在以前的版本中从TLB编辑器复制IDL文本,并手动将其粘贴到新的.ridl文件中。无论哪种方法,您都可以将该.ridl文件添加到CB2010项目中。
这就是为什么我在同一台物理计算机上安装多个IDE版本时使用虚拟机的原因。 |
![]() |
4
1
升级的成本是否与收益相符? 为什么不在新平台上开发新组件的地方开始逐步升级呢?通过不同的互操作助手将新组件集成到旧版本。
This approach was suggested to
|
![]() |
relayman357 · 从函数修改TEdit对象属性 7 年前 |
![]() |
Anthony Burg · 替换已弃用的发布功能 7 年前 |
![]() |
AARMN · C++builder 10.1中表单的重新定义 7 年前 |
![]() |
Peter · 重写VCL类/组件保护方法-如何编码和使用? 9 年前 |