标签: c++builder

BCB:如何迭代表单上的控件?

我正在寻找一些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<>依次尝试每种控件,但我似乎无法让它工作......

c++builder

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

在NTFS压缩目录中,如何读取压缩和未压缩文件的文件?

在我们的应用程序中,我们生成一些大型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)

c++ compression ntfs c++builder

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

将Delphi转换为Borland C++构建器

如何转换此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

delphi animation c++builder cursor

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

OBJ文件的内容是什么?

我知道在任何标准编译器中编译C/C++源代码后生成的OBJ文件会生成OBJ文件,后来与其他所需库链接以形成EXEcutable文件.我想知道OBJ文件的格式/结构.请继续.

c++ c++builder

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

如何使用windows api中的参数执行TThread?

当我创建TThread时我无法将参数传递给线程,所以我需要使用全局变量或者什么?我正在使用Embarcaderos Rad Studio C++ Builder 2010

c c++ c++builder

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

虽然它包含在catch语句中,但不会捕获异常

我有这个用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语句捕获?

c++ delphi pascal c++builder

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

这个字符串的范围是什么?

如果我有以下代码:

{
    UnicodeString sFish = L"FISH";
    char *szFish = AnsiString(sFish).c_str();

    CallFunc(szFish);
}
Run Code Online (Sandbox Code Playgroud)

那么创建的临时AnsiString的范围是什么,以及szFish指向有效数据的时间有多长?它仍然对CallFunc函数有效吗?

它的范围只是一行,还是整个块?

c++ c++builder c++builder-xe

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

Delphi/Cpp相当于PHP中的RawURLEncode

我在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_

我试过没有成功:

  • TIdURI :: ParamsEncode: _%25_&_+_=_%20_%22_'_a_b_c_d_e_f_g_h_
  • TIdURI :: PathEncode: _%25_&_%2B_=_%20_%22_'_a_b_c_d_e_f_g_h_
  • TIdURI :: URLEncode:错误:无协议(需要完整路径)
  • HTTPApp :: HTMLEncode :( _%_& amp;_+_=_ _& quot;_'_a_b_c_d_e_f_g_h_在"&"之后添加空格)
  • Wininet :: WinHTTPEncode:单元中找不到功能
  • IdGlobal :: URLEncode:单位中找不到功能
  • SynaCode :: URLEncode:在XE2中找不到单位

php delphi html-encode c++builder urlencode

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

为什么C++ Builder无法编译呢?

我正在使用此代码:

#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++ pointers vector c++builder c++11

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

使用c ++ builder读取gmail pop3


我想使用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++ c++builder

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