标签: c++builder

如何动态滚动TStringGrid?

我正在使用VCL控件在Borland C++ Builder IDE中工作.我试图让一个TStringGrid组件向下滚动到一行,并根据不同形式的用户输入突出显示该行.我完成了高亮部分,但我无法弄清楚如何将网格向下滚动到正确的行.这里有人知道吗?

delphi vcl c++builder tstringgrid

14
推荐指数
1
解决办法
6854
查看次数

为什么这个计算在boost :: thread和std :: thread中给出不同的结果?

执行此浮点计算时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)

c++ c++builder floating-accuracy boost-thread

14
推荐指数
2
解决办法
492
查看次数

TStringGrid - 有一种获取"当前/选定"行的简单方法吗?

我能走远路,遍历每一行,获得了TRectCellRect(col, row),然后查询其StategdSelected...

但是,有没有更快的方法来获取当前所选行的行号,如果有的话?

delphi vcl c++builder tstringgrid

13
推荐指数
2
解决办法
4万
查看次数

更改CheckBox状态而不调用OnClick事件

当我改变CheckBox的状态时,我很想知道

CheckBox->Checked=false;
Run Code Online (Sandbox Code Playgroud)

它调用CheckBoxOnClick事件,如何避免它?

delphi c++builder tcheckbox

13
推荐指数
4
解决办法
2万
查看次数

Delphi/C++ Builder的标签编辑器组件

我需要一个用于Delphi或C++ Builder的VCL标签编辑器组件,类似于可用于JavaScript的组件:例如这个,或者这个或StackOverflow自己的标签编辑器.

有这样的东西可用或我需要从头开始吗?

我需要的一些具体事情是:

  • 如果存在比编辑器宽度允许的更多标签,编辑器应允许滚动或变为多行.如果是多线,则应该有一个选项来定义一些最大高度,但要防止它变得太高
  • 选择是否在按空格键或逗号键时创建标记
  • 当编辑器没有聚焦时,在编辑器中提示文本(例如"添加新标签")
  • 理想情况下,您应该能够使用键盘箭头在标签之间移动(突出显示它们),因此您只能使用键盘删除任何标签

delphi components vcl c++builder

13
推荐指数
1
解决办法
2407
查看次数

从命令行编译时添加其他库和包含路径

我正在尝试添加在编译期间由我的项目组使用的其他路径.由于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似乎使用IncludePathILINK_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)

msbuild c++builder

13
推荐指数
2
解决办法
2万
查看次数

UTF-8不支持哪些语言?

我正在努力国际化我的一个工作计划.我正在尝试使用远见以避免可能的问题或重做过程.

我看到了UTF-8,UTF-16和UTF-32的参考文献.我的问题是两部分:

  1. UTF-8 支持哪些语言?
  2. UTF-16和UTF-32比UTF-8有什么优势?

如果UTF-8适用于所有内容,那么我很好奇UTF-16和UTF-32的优点是什么(例如数据库中的特殊搜索功能等)理解应该帮助我完成我的程序设计(和数据库连接) )妥善.谢谢!

c++builder utf-8 utf-16 internationalization utf

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

使用哪些COM智能指针类?

我对用于C++编程的COM智能指针类的选择感到困惑:

我知道有三个四个:

  • CCOMPtr 来自ATL
  • _com_ptr_t来自MS Com支持类
  • TComInterface (因为我正在使用C++ Builder 2009)
  • CCOMQIPtr,(我之前忘记了)

我已经阅读了前两个错误与异常处理差异,但TComInterface似乎完全没有记录.根据我的发现,前两个似乎都有问题或"出乎意料"的行为.

理想情况下,我想要一些干净而现代的C++,但boost::com据我所知不存在......

我需要控制来自其他供应商的应用程序.它们通过TLB文件提供COM接口.

c++ com c++builder

12
推荐指数
1
解决办法
4453
查看次数

在C++ Builder中启用安全异常处理

对于Windows 8应用程序认证,有(以及其他)这些要求:

  • 3.2必须使用/SafeSEH标志编译您的应用程序,以确保安全的异常处理
  • 3.3必须使用/NXCOMPAT标志编译您的应用程序以防止数据执行
  • 3.4您的应用必须使用/DYNAMICBASE地址空间布局随机化(ASLR)标志进行编译

我无法在C++ Builder XE中找到如何启用其中任何一个.

对于/NXCOMPAT/DYNAMICBASE,可以使用editbin.exeVS或peflags.exeCygwin.虽然我对可能的副作用更有信心,但如果有本地方式来启用这些副作用.

无论如何,我完全不知所措/SafeSEH.

delphi c++builder seh aslr windows-8

12
推荐指数
1
解决办法
1431
查看次数

了解.cbproj文件中的包导入

我正在使用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'

我正在慢慢解决所有链接器问题,但是当我在这五个列表中的一个中包含库名称时,确切地知道我告诉链接器要做什么将非常有帮助.

linker c++builder c++builder-2010 runtime-packages

12
推荐指数
1
解决办法
4234
查看次数