在过着 Eclipse、Emacs、Visual Studio 和记事本的生活之后,我才刚刚开始熟悉 Embarcadero RAD Studio 2010 :)
我正在进入一个相当大的 C++ 应用程序(500.000 - 1.000.000 行),我发现它广泛使用了 TClientSocket 和 TServerSocket。IDE首先抱怨没有找到TClientSocket,但仍然可以编译,我摸不着头脑。然后我发现它不再默认安装,并且自回归以来被标记为已弃用。
我试图阅读有关该主题的信息,但没有找到太多信息。我的问题是
我有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中的错误吗?
例:
我总是使用Breakpoint来调试我的项目源代码......真的不知道如何在c ++ builder 2010中打印调试消息!怎么做 !!!
我有一个C++ Builder应用程序,我需要在其中使鼠标光标不可见.我怎样才能做到这一点?
我认为可以使用Win32 API完成,但我不知道具体如何.
我有一个定义带有默认参数的函数的类。只要函数定义在调用它的函数之前的头文件中,它就可以正常工作。
但是,如果我在调用函数 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 上方以使其工作到此为止。
是否有可能缩短此声明,因为我在代码中经常使用它
例如,我使用它来强制转换Object为CustomObject使用
dynamic_cast/static_cast<TCustomClassName*>(SenderObject)
Run Code Online (Sandbox Code Playgroud)
有没有可能缩短使用typedef static_cast<TCustomClassName*>或类似的东西,以确保可以使用演员操作typedef?
我正在尝试运行一些别人给我的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) 我已将包含以下内容的文本文件添加到项目中:
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 ×7
c++ ×4
breakpoints ×1
debugging ×1
delphi ×1
delphi-2010 ×1
taction ×1
winapi ×1