我正在寻找一些BCB代码来迭代表单上的控件并获取有关它们的一些信息.
我试过用myForm->ControlCount,typeid(myForm->Controls[i])但这给了我一些问题.
1)typeid(myForm->Controls[i])->Name总是给予"TControl *",我希望"TEdit*","TMemo*"等
我可以通过使用来解决这个问题
if (typeid(myForm->Controls[i]) == typeid(TEdit))
Run Code Online (Sandbox Code Playgroud)
再铸造?(如果是的话,如何最佳演员?)
2)我怎样才能(可能通过强制转换)获得控件的属性?例如,名称,宽度,高度等?
我真的非常感谢这里的实际代码(或一些实际代码的URL); 谢谢.
更新:因为我只需要针对我的特定情况测试5种不同类型的控件,我想我可以dynamic_cast<>依次尝试每种控件,但我似乎无法让它工作......
在我们的应用程序中,我们生成一些大型ASCII日志文件到Windows NTFS压缩目录.我的用户想要知道应用程序状态屏幕上文件的压缩和未压缩大小.我们正在为此应用程序使用Rad Studio 2010 C++.
我在网上找到了这个很好的递归例程来读取磁盘上文件的大小 -
__int64 TransverseDirectory(string path)
{
WIN32_FIND_DATA data;
__int64 size = 0;
string fname = path + "\\*.*";
HANDLE h = FindFirstFile(fname.c_str(), &data);
if (h != INVALID_HANDLE_VALUE)
{
do
{
if ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
if (strcmp(data.cFileName, ".") != 0 && strcmp(data.cFileName, "..") != 0)
{
// We found a sub-directory, so get the files in it too
fname = path + "\\" + data.cFileName;
// recurrsion here!
size += TransverseDirectory(fname);
}
}
else
{ …Run Code Online (Sandbox Code Playgroud) 如何转换此Delphi代码:
const
cnCursorID1 = 1;
begin
Screen.Cursors[ cnCursorID1 ] :=
LoadCursorFromFile(
'c:\winnt\cursors\piano.ani' );
Cursor := cnCursorID1;
end;
Run Code Online (Sandbox Code Playgroud)
到C++ Builder
我知道在任何标准编译器中编译C/C++源代码后生成的OBJ文件会生成OBJ文件,后来与其他所需库链接以形成EXEcutable文件.我想知道OBJ文件的格式/结构.请继续.
当我创建TThread时我无法将参数传递给线程,所以我需要使用全局变量或者什么?我正在使用Embarcaderos Rad Studio C++ Builder 2010
我有这个用C++ Builder 6编写的程序.我没有编写所有代码,只是编写了一些代码.然而,语言不是C++(据我所知) - 它看起来更像是Delphi或Pascal.这就是我将它们全部包含在标签中的原因.
我有一个叫做的int Oversteering.
try
{
Oversteering=HoursCounter.ToInt();
}
catch(EConvertError &convertError)
{
Oversteering=0;
}
Run Code Online (Sandbox Code Playgroud)
HoursCounter 是一个AnsiString,它是一个int的形式.
因为这是整个代码中唯一的try/catch语句(这不太好,我知道),我在Delphi/Pascal/???中找不到任何好的例子,我不知道是不是写得不错.
好吧,我尝试将字符串转换为int.有时我会收到此错误:

也就是说,发生了一个名为EConvertError的异常.
所以我的问题是:为什么这个异常没有被catch语句捕获?
如果我有以下代码:
{
UnicodeString sFish = L"FISH";
char *szFish = AnsiString(sFish).c_str();
CallFunc(szFish);
}
Run Code Online (Sandbox Code Playgroud)
那么创建的临时AnsiString的范围是什么,以及szFish指向有效数据的时间有多长?它仍然对CallFunc函数有效吗?
它的范围只是一行,还是整个块?
我在cpp builder(或delphi)中寻找与PHP RawURLEncode(和Decode)等效的函数.
我使用以下字符串来测试:( _%_&_+_=_ _"_'_a_b_c_d_e_f_g_h_我希望只编码var值,而不是整个URL)
rawurlencode返回: _%25_%26_%2B_%3D_%20_%22_%27_a_b_c_d_e_f_g_h_
我试过没有成功:
_%25_&_+_=_%20_%22_'_a_b_c_d_e_f_g_h__%25_&_%2B_=_%20_%22_'_a_b_c_d_e_f_g_h__%_& amp;_+_=_ _& quot;_'_a_b_c_d_e_f_g_h_在"&"之后添加空格)我正在使用此代码:
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
void out(int* p){
cout << *p;
}
int main(){
vector<unique_ptr<int> > vInt;
for(int i = 0; i < 10; i++)
vInt.push_back(unique_ptr<int>(new int(i)));
out(vInt[0].get()); // 0
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用一些在线编译器,它编译好,但C++ Builder XE2和XE6报告错误:
[bcc32 Error] vector(1179): E2247 'unique_ptr<int,default_delete<int> >::unique_ptr(const unique_ptr<int,default_delete<int> > &)' is not accessible
[bcc32 Error] vector(1203): E2247 'unique_ptr<int,default_delete<int> >::unique_ptr(const unique_ptr<int,default_delete<int> > &)' is not accessible
[bcc32 Error] xutility(1682): E2247 'operator unique_ptr<int,default_delete<int> >::=(const unique_ptr<int,default_delete<int> > &)' is not accessible
[bcc32 Error] …Run Code Online (Sandbox Code Playgroud)
我想使用c ++ builder阅读我的Gmail收件箱电子邮件,所以我使用这段代码,我是从youtube上的视频中获取的,但在我阅读之前,我尝试首先使用按钮中的代码进行连接.
MyPoP3
POP3->Host = "pop.gmail.com";
POP3->Port = 995;
POP3->Username = "@gmail.com";
POP3->Password = "my pass";
POP3->Connect();
Memo1->Text = "Number = " + IntToStr(MyPoP3->CheckMessages()) + "\n";
MyPoP3->Disconnect();
Run Code Online (Sandbox Code Playgroud)
我在短暂的延迟后收到此错误消息.
error connection closed gracefully
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用c ++ builder我只是学习它,所以请你帮忙解决这个错误,因为我找不到任何好的资源.
提前致谢.
c++builder ×10
c++ ×7
delphi ×3
animation ×1
c ×1
c++11 ×1
compression ×1
cursor ×1
html-encode ×1
ntfs ×1
pascal ×1
php ×1
pointers ×1
urlencode ×1
vector ×1