我正在使用VCL控件在Borland C++ Builder IDE中工作.我试图让一个TStringGrid组件向下滚动到一行,并根据不同形式的用户输入突出显示该行.我完成了高亮部分,但我无法弄清楚如何将网格向下滚动到正确的行.这里有人知道吗?
执行此浮点计算时boost::thread,它会产生与std::thread在主线程中或主线程中执行时不同的结果.
void print_number()
{
double a = 5.66;
double b = 0.0000001;
double c = 500.4444;
double d = 0.13423;
double v = std::sin(d) * std::exp(0.4 * a + b) / std::pow(c, 2.3);
printf("%llX\n%0.25f\n", *reinterpret_cast<unsigned long long*>(&v), v);
}
Run Code Online (Sandbox Code Playgroud)
这似乎是因为boost::thread默认情况下使用53位内部精度进行浮点数学运算,而主线程使用的是64位精度.如果在创建_fpreset()后重置FPU单元的状态boost::thread,则结果与主线程中的结果相同.
我正在使用Embarcadero C++ Builder 10.1(编译器bcc32c版本3.3.1)和Boost 1.55.0.我的环境是Windows 7,我正在构建32位Windows目标.
#include <tchar.h>
#include <thread>
#include <boost/thread.hpp>
#include <cstdio>
#include <cmath>
#include <cfloat>
namespace boost { void tss_cleanup_implemented() {} }
void print_number()
{
double …Run Code Online (Sandbox Code Playgroud) 我能走远路,遍历每一行,获得了TRect从CellRect(col, row),然后查询其State为gdSelected...
但是,有没有更快的方法来获取当前所选行的行号,如果有的话?
当我改变CheckBox的状态时,我很想知道
CheckBox->Checked=false;
Run Code Online (Sandbox Code Playgroud)
它调用CheckBoxOnClick事件,如何避免它?
我正在尝试添加在编译期间由我的项目组使用的其他路径.由于C++ Builder 2010使用msbuild,我已经尝试查看文档,并根据我可以找到的内容,AdditionalLibPaths应该可以作为属性传递.即
msbuild /p:AdditionalLibPaths=C:\FooBar\Libs /t:build foo.groupproj
Run Code Online (Sandbox Code Playgroud)
但它似乎没有使用我添加的路径.我之前已经注意到,当传递给msbuild时,VC++和C++ Builder之间的某些属性名称有所不同,并且想知道C++ Builder是否可能使用其他属性名称来添加其他lib并包含文件夹?
我不想替换项目中定义的现有路径,而是添加其他路径.这样做的理由是,当项目在我们的构建服务器上构建时,一些库驻留在标准化的位置,这可能与它在开发机器上的安装位置不同.
的MSBuild实际上可以调用的MSBuild脚本文件,反过来调用其它脚本包括.groupproj使用的手机标签.我知道在使用时会创建一个新的msbuild实例 标记,所以我知道我必须在我的脚本中运行该任务时添加属性.
<MSBuild Targets="Build" Projects="..\Foo.groupproj" Properties="Config=Debug (property to add additional paths here!)" />
Run Code Online (Sandbox Code Playgroud)
更新:
C++ Builder似乎使用IncludePath和ILINK_LibraryPath,但设置这些会覆盖已在项目文件中定义的路径.由于此文件是由IDE创建和维护的,因此任何更改以使其附加而不是覆盖都将被IDE覆盖.这有点奇怪,因为它看起来确实应该附加值
<IncludePath>..\FooBar\;$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;Common Components;..\Config\Config32;$(IncludePath)</IncludePath>
Run Code Online (Sandbox Code Playgroud)
更新2:
在CodeGear.Cpp.Targets中,我将自己的名为AdditionalIncludePaths的属性添加到了包含路径的PropertyGroup中.
在251号线附近
<PropertyGroup>
<BCC_NoLink>true</BCC_NoLink>
<ILINK_OSVersion Condition="'$(ILINK_OSVersion)'=='' And '$(NoVCL)'!='true'">5.0</ILINK_OSVersion>
<DCC_GenerateCppFiles>true</DCC_GenerateCppFiles>
<ShowStdOut Condition="'$(ShowStdOut)'==''">$(ShowGeneralMessages)</ShowStdOut>
<!-- …Run Code Online (Sandbox Code Playgroud) 我正在努力国际化我的一个工作计划.我正在尝试使用远见以避免可能的问题或重做过程.
我看到了UTF-8,UTF-16和UTF-32的参考文献.我的问题是两部分:
如果UTF-8适用于所有内容,那么我很好奇UTF-16和UTF-32的优点是什么(例如数据库中的特殊搜索功能等)理解应该帮助我完成我的程序设计(和数据库连接) )妥善.谢谢!
我对用于C++编程的COM智能指针类的选择感到困惑:
我知道有三个四个:
CCOMPtr 来自ATL_com_ptr_t来自MS Com支持类TComInterface (因为我正在使用C++ Builder 2009)CCOMQIPtr,(我之前忘记了)我已经阅读了前两个错误与异常处理差异,但TComInterface似乎完全没有记录.根据我的发现,前两个似乎都有问题或"出乎意料"的行为.
理想情况下,我想要一些干净而现代的C++,但boost::com据我所知不存在......
我需要控制来自其他供应商的应用程序.它们通过TLB文件提供COM接口.
对于Windows 8应用程序认证,有(以及其他)这些要求:
/SafeSEH标志编译您的应用程序,以确保安全的异常处理/NXCOMPAT标志编译您的应用程序以防止数据执行/DYNAMICBASE地址空间布局随机化(ASLR)标志进行编译我无法在C++ Builder XE中找到如何启用其中任何一个.
对于/NXCOMPAT和/DYNAMICBASE,可以使用editbin.exeVS或peflags.exeCygwin.虽然我对可能的副作用更有信心,但如果有本地方式来启用这些副作用.
无论如何,我完全不知所措/SafeSEH.
我正在使用Embarcadero RAD Studio 2010(C++).项目文件(.cbproj)有五个不同的标记,包含.bpis或.libs列表.我想了解一些关于链接器如何使用这些库文件列表的信息(使用或不使用运行时包构建时).
LinkPackageImports
LinkPackageStatics
AllPackageLibs
PackageLibs
PackageImports
我想我已经理解了最后一个.它包含可以从IDE中的"项目属性"设置的运行时包列表.
这个问题的动机是我试图从我的应用程序中消除不必要的依赖项..cbproj中的这五个标签似乎都包含各种不同的lib和bpis.我知道我不需要的一些库,以及我认为我不需要的一些库.从某些列表中删除某些库似乎没有任何效果,而从其他列表中删除其他库会导致表单的链接器错误[ILINK32 Error] Fatal: Unable to open file 'FILENAME.OBJ'
我正在慢慢解决所有链接器问题,但是当我在这五个列表中的一个中包含库名称时,确切地知道我告诉链接器要做什么将非常有帮助.
c++builder ×10
delphi ×5
vcl ×3
c++ ×2
tstringgrid ×2
aslr ×1
boost-thread ×1
com ×1
components ×1
linker ×1
msbuild ×1
seh ×1
tcheckbox ×1
utf ×1
utf-16 ×1
utf-8 ×1
windows-8 ×1