我有一个应用程序(C++ Builder 6.0)需要知道特定文件夹中的图像总数,然后我必须加载它们:在 ImageList 或 ComboBoxEx 中...或任何其他控件中...
我怎样才能做到这一点?
我知道如何在控件中加载图像,或保存在 TList 或 ImageList 中...但是如何知道目录中有多少个文件,以及如何加载其中的每个图像?
我对我的英语感到抱歉。
今天我下载了Delphi和C++ Builder XE试用版.
我很担心Delphi exes的大小很长一段时间(在XE中它是850 kb),我想,为什么这么大的应用程序,即使它只是一个空白的形式?
但在C++ Builder XE上,最小大小只有120 kb!即使我在C++项目中包含Delphi表单,仍然没有主要的大小差异.
C++ Builder如何能够使用几乎相同的内容创建一个小的exe?为什么Delphi不能这样做呢?
我正在将以下C++组件翻译成Delphi:
但它不起作用......我附上了翻译过的代码,其中一位专业人士可以看看吗?
谢谢!
这是代码:
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) 我基本上运行以下代码.此代码逐行执行并获取通用逗号分隔表文件的不同字段.我的问题是,有时"标题"字段可以包含逗号.当它这样时,它被引号括起来:"这,这是我的头衔".但是当我的代码看到逗号时,它只会将其后的所有内容视为下一个字段.并非所有标题都有引号,只有引号括起来.我的问题是,我不知道如何使代码检查这....我怎样才能让我的代码检查这个问题?
非常感谢,你好.这对我的有酬工作意义重大!
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) 这是一个非常容易解释的问题,我使用FireMonkey来设计表单,当我向标签添加TGlowEffect时,它会破坏Label看起来的方式.
如果有人知道如何正确地做到这一点我会很感激.

应用TGlowEffect后:

文本显着加粗,应用的唯一影响是模糊.
文本只在编辑器中显示如下,但我希望它看起来像是在编译之后.
也许我刚认真对待FireMonkey并且我做错了什么,如果有人有关于如何正确使用FireMonkey的任何好的参考资料我也很感激这个链接.
这是我的程序使用的类层次结构:

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) 我有一个用于菜单项和TButton的TAction.我希望菜单项显示标签,TButton 只显示图标.但是,当分配一个Action时,Vcl会自动设置TButton的Caption属性,我无法摆脱它.
有任何想法吗?
我是电路设计师,而不是软件工程师,所以我不知道如何追踪这个问题.
我正在使用一些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++ 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代表一个房间,其中:
鉴于:
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) 以下程序显示了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++builder ×10
c++ ×7
delphi ×4
algorithm ×1
c++builder-6 ×1
clang ×1
components ×1
constructor ×1
delphi-7 ×1
firemonkey ×1
llvm ×1
taction ×1
windows-xp ×1
x86 ×1