标签: c++builder

如何知道并加载特定文件夹中的所有图像?

我有一个应用程序(C++ Builder 6.0)需要知道特定文件夹中的图像总数,然后我必须加载它们:在 ImageList 或 ComboBoxEx 中...或任何其他控件中...

我怎样才能做到这一点?

我知道如何在控件中加载图像,或保存在 TList 或 ImageList 中...但是如何知道目录中有多少个文件,以及如何加载其中的每个图像?

我对我的英语感到抱歉。

c++ windows-xp c++builder

5
推荐指数
1
解决办法
5617
查看次数

为什么我的C++ Builder程序比我的Delphi程序小得多?

今天我下载了Delphi和C++ Builder XE试用版.

我很担心Delphi exes的大小很长一段时间(在XE中它是850 kb),我想,为什么这么大的应用程序,即使它只是一个空白的形式?

但在C++ Builder XE上,最小大小只有120 kb!即使我在C++项目中包含Delphi表单,仍然没有主要的大小差异.

C++ Builder如何能够使用几乎相同的内容创建一个小的exe?为什么Delphi不能这样做呢?

delphi c++builder

5
推荐指数
1
解决办法
854
查看次数

你能帮助将这个非常小的C++组件翻译成Delphi吗?

我正在将以下C++组件翻译成Delphi:

http://borland.newsgroups.archived.at/public.delphi.vcl.components.using.win32/200708/0708225318.html

但它不起作用......我附上了翻译过的代码,其中一位专业人士可以看看吗?

谢谢!

这是代码:

unit ComboBoxPlus;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Messages, Types, Windows, Graphics;

type
  TComboBoxPlus = class(TComboBox)
  private
    FClickedItem: Integer;
    FListHandle: HWND;
    ListWndProcPtr: Longint;
    OldListWndProc: Pointer;

    function GetIsEnabled(Index: Integer): Boolean;
    procedure SetIsEnabled(Index: Integer; Value: Boolean);
  protected
    procedure WndProc(var Message: TMessage);
    procedure ListWndProc(var Message: TMessage); virtual;
    procedure DrawItem(Index: Integer; Rect: TRect;
      State: TOwnerDrawState);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property Enabled[Index: Integer]: Boolean read GetIsEnabled write SetIsEnabled;
  published
    { Published declarations }
  end;

procedure Register; …
Run Code Online (Sandbox Code Playgroud)

delphi components c++builder delphi-7

5
推荐指数
1
解决办法
1196
查看次数

std :: getline用于逗号分隔的表文件,其中包含某些字段的引号

我基本上运行以下代码.此代码逐行执行并获取通用逗号分隔表文件的不同字段.我的问题是,有时"标题"字段可以包含逗号.当它这样时,它被引号括起来:"这,这是我的头衔".但是当我的代码看到逗号时,它只会将其后的所有内容视为下一个字段.并非所有标题都有引号,只有引号括起来.我的问题是,我不知道如何使代码检查这....我怎样才能让我的代码检查这个问题?

非常感谢,你好.这对我的有酬工作意义重大!

while (getline(BookLine, ImpLine, '\n'))  // Get each line
{
   // create a string stream from the standard string
   std::istringstream StrLine(ImpLine);

   std::string
   bookNumber,
   chk,
   author,
   title,
   edition;

   // Parse lines
   std::getline(StrLine,bookNumber,',');
   std::getline(StrLine,chk,',');
   std::getline(StrLine,author,',');
   std::getline(StrLine,title,',');            
   std::getline(StrLine,edition,',');
}
Run Code Online (Sandbox Code Playgroud)

c++ c++builder

5
推荐指数
1
解决办法
2163
查看次数

在Delphi/C++ Builder中的TLabel上使用TGlowEffect

这是一个非常容易解释的问题,我使用FireMonkey来设计表单,当我向标签添加TGlowEffect时,它会破坏Label看起来的方式.

如果有人知道如何正确地做到这一点我会很感激.

在此输入图像描述

应用TGlowEffect后:

在此输入图像描述

文本显着加粗,应用的唯一影响是模糊.

文本只在编辑器中显示如下,但我希望它看起来像是在编译之后.

也许我刚认真对待FireMonkey并且我做错了什么,如果有人有关于如何正确使用FireMonkey的任何好的参考资料我也很感激这个链接.

c++ delphi c++builder firemonkey

5
推荐指数
1
解决办法
552
查看次数

在构造函数中的神秘堆栈溢出

这是我的程序使用的类层次结构:

在此输入图像描述

TForm_Upgrade_Database的构造函数如下所示:

__fastcall TForm_Upgrade_Database :: TForm_Upgrade_Database(TComponent*Owner,int newest_version):TForm(Owner){}

在尝试创建公式的实例之后

TForm_Upgrade_Database *dlg = new TForm_Upgrade_Database(this, newest_version);
Run Code Online (Sandbox Code Playgroud)

我的程序抛出EStackOverflow异常

在此输入图像描述

我停止了程序并在TForm_Upgrade_Database构造函数中使用断点再次运行它.几步之后callstack看起来像这样:

在此输入图像描述

如何TCustomForm构造函数继续尝试调用其后代的构造函数???

最小的测试用例:

so_project.cpp:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "f_form.h"
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   TForm_Upgrade_Database *form = new TForm_Upgrade_Database(NULL, 10);
   delete form;
   form = NULL; 

   return 0;
}
//---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

f_form.cpp:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "f_form.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm_Upgrade_Database *Form1;
//---------------------------------------------------------------------------
__fastcall TForm_Upgrade_Database::TForm_Upgrade_Database(TComponent* Owner, int x)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

f_form.h:

//---------------------------------------------------------------------------

#ifndef f_formH
#define …
Run Code Online (Sandbox Code Playgroud)

c++ stack-overflow constructor c++builder c++builder-6

5
推荐指数
1
解决办法
504
查看次数

使用TAction作为"仅图标"TButton

我有一个用于菜单项和TButton的TAction.我希望菜单项显示标签,TButton 显示图标.但是,当分配一个Action时,Vcl会自动设置TButton的Caption属性,我无法摆脱它.

有任何想法吗?

delphi c++builder taction

5
推荐指数
1
解决办法
468
查看次数

当值变小时,为什么这些计算需要20倍的时间

我是电路设计师,而不是软件工程师,所以我不知道如何追踪这个问题.

我正在使用一些IIR过滤器代码,当我通过过滤器处理极小的值时,我遇到极慢的执行时间问题.为了找到问题,我写了这个测试代码.

通常,循环将在大约200毫秒左右运行.(我没有测量它.)但是当TestCheckBox-> Checked时,它需要大约7秒才能运行.问题在于环路内A,B,C和D的大小减小,这正是IIR滤波器输入变为零后的值所发生的情况.

我认为问题在于变量的指数值小于-308.一个简单的解决方法是将变量声明为long double,但这在实际代码中并不是一个简单的修复,而且我似乎不应该这样做.

任何想法为什么会发生这种情况以及简单的修复可能是什么

如果它很重要,我使用的是C++ Builder XE3.

int j;
double A, B, C, D, E, F, G, H;
//long double A, B, C, D, E, F, G, H; // a fix
A = (double)random(100000000)/10000000.0 - 5.0;
B = (double)random(100000000)/10000000.0 - 5.0;
C = (double)random(100000000)/10000000.0 - 5.0;
D = (double)random(100000000)/10000000.0 - 5.0;
if(TestCheckBox->Checked)
 {
  A *= 1.0E-300;
  B *= 1.0E-300;
  C *= 1.0E-300;
  D *= 1.0E-300;
 }
for(j=0; j<=1000000; j++)
{
 A *= 0.9999;
 B *= 0.9999;
 C …
Run Code Online (Sandbox Code Playgroud)

c++ x86 c++builder

5
推荐指数
2
解决办法
593
查看次数

在知道墙壁的位置的同时计算房间

这个问题是关于C++ builder 6的代码.赏金对标准C++算法感兴趣,以便在给定标准化输入的情况下解决问题(有关更多信息,请参阅内容.)

城堡

txt文件也代表我在数组中的数据:

1101 0110 1101 0110 1100 0101 0110
1110 1001 0110 1011 1010 1111 1010
1000 0101 0011 1110 1011 1110 1010
1011 1101 0101 0001 0101 0011 1011

txt的说明:
txt文件中的数字是房间墙壁的4位表示,其中一个位表示墙.壁位按顺时针顺序开始,最重要的位是西墙.例如,1101代表一个房间,其中:

  • 位于最重要位置的位置表示西方的一堵墙
  • 下一个最重要位置的设定位表示朝向北方的墙
  • 未设置的位表示没有东墙
  • 位于最低位置的设置位表示南边的墙

鉴于:

  1. 房间的外墙总是有一面墙
  2. 内墙总是在两个房间都有表达(在这个例子中,因为(1,1)的房间是1101,它包含一个向南的墙,在(1,2)1110的房间必须包含一个向北的墙
  3. 永远不会有numeric_limits<int>::max()房间

被要求发布我的代码,所以这里是:
我试图解决这个问题,但我得到EAAccessviolation有人可以告诉我我做错了什么?

  int rn=0,z=0, global=0,coord[15],c[411],b1[411];

void peruse ( int i, int j,int* bb)
{
bool top=false,bottom=false,right=false,left=false;
//truth checks

if (bb[i*m+j]<1000)  left=true;

if (bb[i*m+j]<100)   top=true; …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm c++builder variable-assignment

5
推荐指数
2
解决办法
710
查看次数

是否有关于 std::move 的这种使用的编译警告?

以下程序显示了std::move(). 是否可以使用 LLVM 获得有关这些的编译警告?我注意到有一些其他上下文的诊断std::move是多余的。

我用 bcc32c 5.0.2 版(基于 LLVM 5.0.2)编译了这个,没有收到任何警告。

#include <vector>

int main() {
    const std::vector<int> a = {1, 2, 3};
    std::vector<int> b = {3, 4, 5};

    std::vector<int> c = std::move(a); // std::move from const

    std::vector<int> d = std::move(b);

    std::vector<int> e = b; // used after std::move
}
Run Code Online (Sandbox Code Playgroud)

c++ c++builder llvm clang

5
推荐指数
1
解决办法
635
查看次数