刚刚开始测试FireMonkey,无法找到制作动态大小/定位组件的方法.
VCL有Anchor属性,FM没有.
有人看到我错过的东西
更新:
FM中没有简单的锚定功能.您必须创建TLayouts并对齐它们,然后将控件放在面板中以使它们"粘住".如果您使用的是旧版本的Builder或Delphi,这将与我们以前与TPanels相同.
我从BCB5开始使用C++ Builder开发了一系列Win32 VCL应用程序,并希望将它们移植到ECB2009或其现在所称的任何内容.
我的一些应用程序使用旧的TNT/TMS unicode组件,因此我在整个代码中都有很好的AnsiStrings和WideStrings组合.新版本引入了UnicodeString,以及一些改变c_str等函数行为方式的#defines.
我希望以尽可能向后兼容的方式修改我的代码,以便在必要时仍然可以在BCB2007上编译和运行相同的代码库(以非unicode方式).
特别关注的领域是:
我正在寻找可以应用以简化迁移的指南,同时尽可能保持向后兼容性,而不是刀叉式更改.
如果没有这样的指导方针,也许我们可以在这里制定一些指南?
在Delphi中是否有关于跨线程通信的文档?如何向没有窗口的线程发送消息?
我熟悉使用Delphi RTTI来访问"简单"属性(ints/enums/strings等),但我无法掌握如何使用Array属性.
我首先寻找GetPropValue/SetPropValue调用的数组等价物.我希望看到类似的这些,但采取额外的"索引"参数,但似乎无法在typinfo单元帮助中找到任何东西.
Delphi和C++ Builder有一个带有Scanline属性的TBitmap类,它返回位图像素的内存.当我查看BMP文件的十六进制编辑器时,这似乎有所不同.
我正在尝试将C++ Builder应用程序移植到Java,并希望了解Scanline中的算法.如果我有文件,我如何生成像Scanline那样的内存阵列?Scanline背后的确切规格是什么?
Clarifcation:BMP是Windows 24bit DIB.我在代码中没有提供任何其他信息; C++ Builder似乎将它加载到某种类型的内存结构中,但它不是逐字节的.想知道那个结构的规格是什么.
当调用需要 BSTR 的函数时,最好能够编写如下内容:
iFoo->function( bs"HELLO" );
Run Code Online (Sandbox Code Playgroud)
然而,我知道的唯一解决方法是使用调用SysAllocString等的包装器,例如:
iFoo->function( WideString(L"HELLO").c_bstr() );
Run Code Online (Sandbox Code Playgroud)
这有点丑陋。实际上有这样的选项来创建BSTR文字吗?
动机:通过避免分配和释放,代码更易于阅读,运行时性能更快。
澄清:我只讨论调用者(即我们)拥有 BSTR 所有权的情况,例如:调用带有BSTR [in]参数的函数。当然,向函数提供指向 BSTR 文字的指针是愚蠢的,该函数将继续尝试释放字符串。
我正在使用Borland C++ Builder 2009,我会像这样显示右箭头和左箭头:
Button2->Hint = L"Ctrl+\u2190" ;
Button3->Hint = L"Ctrl+\u2192" ;
Run Code Online (Sandbox Code Playgroud)
这在Windows 7上工作正常,应用程序使用字体'Segoe UI'.
在XP上我得到一个正方形而不是箭头,我在XP上使用字体'Tahoma'.换句话说,XP中的Tahoma中没有提到的Unicode字符.
有一种简单快捷的方法可以简单地检查当前使用的字体是否支持所请求的Unicode字符?如果是这样,我可以用'>'或'<'替换箭头.不完美,但足够好.我不想在这个阶段开始更改字体.
你的帮助表示赞赏
我使用Borland C++ Builder 2009,我的应用程序被翻译成多种语言,包括波兰语.
对于一小段功能,我使用towuppper()来大写字符串,在用户首次忽略时强调它.
原始字符串从一个语言DLL加载到utf16 wstring对象,我转换如下:
int length = mystring.length() ;
for (int x = 0 ; x < length ; x++)
{
mystring[x] = towupper(mystring[x]);
}
Run Code Online (Sandbox Code Playgroud)
这一切运作良好,除了波兰,在下面的句子: "Rozumiemryzykownośćwykonania TEJ operacji"转换为"ROZUMIEM RYZYKOWNO SC的WYKONANIA TEJ OPERACJI",而不是"ROZUMIEM RYZYKOWNO SC WYKONANIA TEJ OPERACJI"
(请注意,"ryzykowność"这两个字的最后两个字符不会转换).
这并不是说这个角色没有大写的Unicode变体.Unicode字符346可以解决问题. http://www.fileformat.info/info/unicode/char/015a/index.htm
这是我过时的编译器安装中过时的库的问题还是我错过了其他的东西?
我想知道是否可以使用Clang Static Analyzer分析Embarcadero RAD Studio C++项目.据我所知,我需要一个makefile或任何能够用clang构建项目的东西.但是Embarcadero使用它自己的C++扩展,因此无法使用clang编译代码.
如果可以进行分析(至少对于单独的文件),如果有人发布了我需要做的一系列步骤,那将是一件好事.
下面的代码是为 Linux 编写的,使用了 open、read、write 和 close。我在 Windows 计算机上工作,我通常使用 fopen、fgets、fputs、fclose。现在,我在打开、读取、写入和关闭时遇到无原型错误。是否有我可以包含的头文件来使其在 Windows 计算机上工作,或者我是否需要转换代码?您能否展示如何转换它,使其在 Windows 上的工作方式相同,或者至少将我指向一个显示如何转换它的在线文档?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#ifdef unix
#include <unistd.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#ifndef O_BINARY
#define O_BINARY 0
#endif
#define NB 8192
char buff[NB];
int
main(argc,argv)
int argc;
char **argv;
{
int fdi, fdo, i, n, m;
char *p, *q;
char c;
if( argc > 0 )
printf( "%s: Reverse bytes in 8-byte values \n", argv[0] ); …Run Code Online (Sandbox Code Playgroud) c++builder ×10
c++ ×4
delphi ×4
c ×2
vcl ×2
bitmap ×1
bstr ×1
delphi-xe2 ×1
firemonkey ×1
llvm-clang ×1
porting ×1
posix ×1
rtti ×1
unicode ×1
winapi ×1
windows ×1