我需要为C++ Builder 5找到基本的WYSIWYG HTML编辑器组件,以便用户创建一些我将粘贴到现有HTML页面模板中的简单文本.只需简单的支持即可创建链接,添加图像,使用标题/粗体/斜体.
我继承了一个Delphi应用程序,我对object pascal一无所知.
这是我需要编译到新版本的C++ Builder XE中的BPL.
当我运行make时,我得到错误:
E2064左侧无法分配.
我已经学会了足够多的obj pascal知道我有一个试图被赋值的常量.
但是,显然,你可以克服这种行为; 通过进入Delphi编译器下的Build选项并打开"Assignable Typed constants",实质上将常量转换为vars.
我这样做了,我继续得到同样的错误.
我尝试用{$ J +}和{$ J-}包围我的代码,但仍然无法编译.
procedure TChunkIDAT.CopyInterlacedRGB8(const Pass: Byte;
Src, Dest, Trans{$IFDEF Store16bits}, Extra{$ENDIF}: pChar );
var
Col: Integer;
begin
{Get first column and enter in loop}
Col := ColumnStart[Pass];
Dest := pChar(Longint(Dest) + Col * 3);
repeat
{Copy this row}
Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) + 2)^]; inc(Dest);
Run Code Online (Sandbox Code Playgroud)
在最后一行获取错误.如果我将const更改为var,那么我会得到声明与前一个声明不同但我不知道前一个声明在哪里的错误....
有没有办法在 TRichEdit 控件中暂停/恢复撤消记录?是否有要发送的消息或要设置的模式?
编辑
我已经通过使用 ITextDocument 接口解决了它。看我下面的帖子。
我在 Unix 中使用过 C++,并且知道 .h 和 .cpp 文件,但我从未使用过 C++ 构建器,现在我有一个包含 .cpp、.h 和 .dfm 文件的项目。那么.dfm 文件的用途是什么以及我们如何使用它?
提前致谢。
我的环境:
操作系统 - Windows7 Pro(32位)
IDE - RadStudio XE2 Update4
我想知道 Synchronize() 函数。
Synchronize() 函数用于线程程序中。关于在 C+ builder 中使用 Synchronize(),示例如下(可以在这里看到)
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(&UpdateCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall TMyThreadClass::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
Run Code Online (Sandbox Code Playgroud)
我感到困惑的是,在某些旧版本的 C++ builder(例如 bcb6)中,使用了 Synchronize()
// Synchronize(UpdateCaption);
Run Code Online (Sandbox Code Playgroud)
函数名前没有“&”;
同样在此处的 …
我使用 Cppcheck 1.70 检查 C++-Builder 项目。我收到很多这样的风格警告
[source\DbgRecMain.cpp:452]: (style) The function 'FormResize' is never used.
Run Code Online (Sandbox Code Playgroud)
这些函数是使用的事件处理程序,但不是在 C++ 代码中显式使用:它们在加载相应的表单或数据模块后由 VCL 运行时绑定。当然,Cppcheck 不会检查 DFM 文件,这就是为什么它无法检测其中定义的事件和处理程序之间的引用。
我想到的一些选择
如何专门抑制这些关于明显未使用的事件处理程序的警告?
我正在尝试使用流畅的界面实现构建器模式,以在 C++ 中构建对象。我希望构建器遵循 CRTP 模式。在 Java 中,我会执行类似于以下代码的操作。我如何在 C++ 中做同样的事情?
下面是一些具有基类和派生类的 java 代码。派生类的构建器继承了基类的构建器..
// Base class
public abstract class BaseClass {
private final int base_class_variable;
BaseClass(final Builder <?> builder) {
this.base_class_variable = builder.base_class_variable;
}
public abstract static class Builder <B extends Builder> {
int base_class_variable;
public B setBaseClassVariable(final int variable) {
this.base_class_variable = variable;
return self();
}
protected abstract B self();
}
}
// Derived class
public final class DerivedClass extends BaseClass {
private final int derived_class_variable;
private DerivedClass(final Builder builder) …Run Code Online (Sandbox Code Playgroud) 我正在开发一个需要持续约 1 毫秒睡眠的程序。睡眠用于生成长度约为 1 毫秒的硬件脉冲。
我正在使用以下代码进行睡眠
void usleep(__int64 usec)
{
HANDLE timer;
LARGE_INTEGER ft;
ft.QuadPart = -(10*usec); // Convert to 100 nanosecond interval, negative value indicates relative time
timer = CreateWaitableTimer(NULL, TRUE, NULL);
SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0);
WaitForSingleObject(timer, INFINITE);
CloseHandle(timer);
}
Run Code Online (Sandbox Code Playgroud)
取自这里
当我在 Intel i7 上使用上面的代码(使用 Embarcaderos bcc32 编译器)时,通过 1000 (1ms) 我得到一个睡眠,我使用Poco 的时间戳函数测量到大约 1ms。代码本身在一个线程中执行。
代码如下所示:
mDebugFile << std::setprecision (17) << mPulseEventTime.elapsed()/1000.0 << "\t" << 0 << "\n";
setHigh(false);
mDebugFile << std::setprecision (17) << mPulseEventTime.elapsed()/1000.0 << …Run Code Online (Sandbox Code Playgroud) 像类 TObject、TForm、TComponent。
为什么它们以字母“T”开头?
“T”是什么意思?
这是一个IDE问题。
当我为 C++Builder 选择New -> Multi-Device Application项目时,目标平台仅提供 Windows 32 位和 Windows 64 位编译选项。
但是,当我New -> Multi-Device Application为 Delphi 选择项目时,目标平台的所有其他编译选项都可用,例如 Android 32/64 位、iOS(设备和 Sim)和 MacOS(ARM、64)
在安装过程中,我一开始也选择了所有可用的目标平台。
(在安装RAD Studio 12.0之前,我的电脑上安装了RAD Studio 11.3,我先卸载了11.3,然后安装了较新的12.0版本)
“添加平台”弹出窗口也呈灰色。
操作系统是Windows 11。
知道如何解决这个问题吗?
我尝试卸载整个IDE并重新安装3次,但问题仍然存在。
C:\ProgramData\Embarcadero再次重新启动安装时,我还删除了 Embarcadero 文件夹中的所有内容。