标签: c++builder-2010

为什么不推荐使用 TClientSocket 和 TServerSocket,我应该使用什么代替?

在过着 Eclipse、Emacs、Visual Studio 和记事本的生活之后,我才刚刚开始熟悉 Embarcadero RAD Studio 2010 :)

我正在进入一个相当大的 C++ 应用程序(500.000 - 1.000.000 行),我发现它广泛使用了 TClientSocket 和 TServerSocket。IDE首先抱怨没有找到TClientSocket,但仍然可以编译,我摸不着头脑。然后我发现它不再默认安装,并且自回归以来被标记为已弃用。

我试图阅读有关该主题的信息,但没有找到太多信息。我的问题是

  • 为什么不推荐使用 TClientSocket 和 TServerSocket?
  • 它们在运行方式上与 WinSock 和 BSD 套接字有何不同?
  • 最好使用什么替代方法,是否有一种快速替代方法,无需遍历整个应用程序并在使用 TClientSocket 和 TServerSocket 的任何地方进行更改?我猜这主要是内部运作发生了变化,或者?

c++ c++builder c++builder-2010 tclientsocket

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

将TAction重命名为另一种形式

我有2个表单,我想分享一个单独的TActionManager和分配TAction-s.

第一种形式是主要形式 - 它持有TActionManager,TAction标题为"行动".

Form1的主菜单将此操作和menuitem标题属性设置为"操作A".Form2包括Form1,还为menuitem分配操作,标题设置为"Action B".

在设计时,一切看起来都很好 - 菜单项在Form1和Form2中被命名为"Action A"和"Action B",并且分配了相同的操作.它在运行时也可以正常工作(对两种表单都正确处理OnExecute).

但是 - 在运行时,Form1菜单项有标题"Action A",Form2有菜单项标题"Action",就像操作标题一样.

我是否错误地将它们包括在内,是否可以在Form2上包含Form1以共享操作并更改标题?这是D2010/CB2010中的错误吗?

例:

  1. 创建Form1和Form2并将主菜单添加到两者
  2. 将TActionManager拖放到Form1并在其中创建Action1.
  3. 在Form1 Action1中分配菜单项,然后修改Caption(标题现在显示为粗体,表示从默认值更改)
  4. 在Form2中分配菜单项也是Action1(来自Form1 TActionManager)并更改默认标题.
  5. 在运行时,现在Form1更改了标题(与Action1.Caption不同),并且Form2与Action1.Caption具有相同的标题,尽管标题应该是在步骤4中更改的新值.

delphi taction delphi-2010 c++builder-2010

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

在c ++ builder 2010中打印调试消息

我总是使用Breakpoint来调试我的项目源代码......真的不知道如何在c ++ builder 2010中打印调试消息!怎么做 !!!

c++builder c++builder-2010

3
推荐指数
1
解决办法
6590
查看次数

如何使鼠标光标不可见?

我有一个C++ Builder应用程序,我需要在其中使鼠标光标不可见.我怎样才能做到这一点?

我认为可以使用Win32 API完成,但我不知道具体如何.

winapi c++builder c++builder-2010

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

在 C++ Builder 类中定义默认函数参数和参数太少错误

我有一个定义带有默认参数的函数的类。只要函数定义在调用它的函数之前的头文件中,它就可以正常工作。

但是,如果我在调用函数 C++ Builder (2010) 报告参数太少错误后移动它。

标题可能是例如:

class TSomething
{
public:
void CallingFunction();
void Function(int a);
}
Run Code Online (Sandbox Code Playgroud)

和 cpp 文件可能是:

#include "Header.h"

TSomething::CallingFunction()
{
Function(); // "Too few arguments" here...
}

TSomething::Function(int a = 123)
{
//... some code here ...
}
Run Code Online (Sandbox Code Playgroud)

因此,如果调用函数在“函数”之前,它会报告参数太少。我不明白为什么,因为它在 cpp 文件的 #include 语句中包含函数定义。谁能告诉我如何重新排列它以便它正确接受默认参数?我可以将 Function(int a) 移到 CallingFunction 上方以使其工作到此为止。

c++ c++builder c++builder-2010

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

是否可以缩短此声明?

是否有可能缩短此声明,因为我在代码中经常使用它

例如,我使用它来强制转换ObjectCustomObject使用

dynamic_cast/static_cast<TCustomClassName*>(SenderObject)
Run Code Online (Sandbox Code Playgroud)

有没有可能缩短使用typedef static_cast<TCustomClassName*>或类似的东西,以确保可以使用演员操作typedef

c++ c++builder c++builder-2010

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

忽略/错过C++断点

我正在尝试运行一些别人给我的C++代码.起初有一个istream文件链接断开,我通过添加包含路径修复了这个链接:

C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\include\dinkumware
Run Code Online (Sandbox Code Playgroud)

代码现在编译但它不会在任何断点处停止,例如formcreate:

// Initialise the form and read in the module and inverter names.
void __fastcall TMain::FormCreate(TObject *Sender)
{
    ifstream inits;
    ifstream inverters;
    ifstream modules;
    char line[1000];
    AnsiString FTO;
    inits.open("PVSM.ini", ios::in);
    if (inits.is_open())
    {
            inits.getline(line,1000);
            AnsiString parmm(line);
            ModDir = parmm.SubString(1,parmm.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parmi(line);
            InvDir = parmi.SubString(1,parmi.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parmt(line);
            MetDir = parmt.SubString(1,parmt.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parms(line);
            ShdDir = parms.SubString(1,parms.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parmx(line);
            ExpDir = parmx.SubString(1,parmx.Pos(" ")-1);
    }
    else    // …
Run Code Online (Sandbox Code Playgroud)

c++ debugging breakpoints c++builder c++builder-2010

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

资源编译错误(源输入中的错误字符)

我已将包含以下内容的文本文件添加到项目中:

1 24 "MyApplication.manifest"
Run Code Online (Sandbox Code Playgroud)

在同一个文件夹中还有MyApplication.manifest一个XML文件 - 这一个: C++ Builder/Delphi 2010应用程序清单模板

在我尝试从RC构建资源后,我得到错误 - 源输入中的错误字符(1)

有什么想法吗?

RT_MANIFEST 值是24,但我不确定1应该是什么.

c++builder embedded-resource c++builder-2010

0
推荐指数
1
解决办法
723
查看次数