标签: c++builder

如何使用RTTI访问Delphi阵列属性

我熟悉使用Delphi RTTI来访问"简单"属性(ints/enums/strings等),但我无法掌握如何使用Array属性.

我首先寻找GetPropValue/SetPropValue调用的数组等价物.我希望看到类似的这些,但采取额外的"索引"参数,但似乎无法在typinfo单元帮助中找到任何东西.

delphi c++builder rtti

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

制作者/消费者用于与设备交谈

这是我的问题:我必须能够通过串口发送和接收设备.这必须以多线程方式完成.流程如下:

  1. 等待设备向我发送一些东西 - 或者如果空闲,则查询状态以查看是否在线与设备

  2. 如果设备向我发送了一些内容,则处理消息,确认并告诉设备根据需要执行其他命令

现在,我有一个接收线程和传输线程.接收线程有一个while循环,它通过ReadFile(...)检查串行端口一个字节.如果我有一个字节,那么我开始构建我的缓冲区,然后解析数据以确定发送给我的是什么.

发送线程接受读线程定义的下一个命令,并通过WriteFile将其发送到同一个COM端口.关键是我和设备之间存在接收/发送关系.

我的问题是,我在这里有嵌套的生产者/消费者模型吗?如果我的接收线程正在从设备消耗并且发送线程正在向设备产生,那么线程需要固有地通话才能使它们同步 - 对吗?同步我的工作有效和快速与设备交谈的最佳方法是什么?注意:我使用的是具有TThreads的C++ Builder 5,可以使用关键部分和互斥锁.

编辑:我也在使用轮询,所以我愿意使用WaitCommEvent,如果这会更好!

c++ windows multithreading c++builder

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

如何在Borland VCL中获取组件的父表单?

我想确定给定组件在我的应用程序中属于哪种形式.Parent和Owner属性都不能被假定为表单本身,所以我不能简单地使用它.

我想我可以递归地通过Parent属性,直到我得到从TForm派生的东西,但是有更好的方法吗?我使用了搜索功能,但找不到任何特定于我的问题.

顺便说一句,我正在使用Borland C++ Builder(标记为Delphi,因为大多数VCL用户似乎都是用Delphi编写的,而且我读Delphi代码就好了).

提前致谢!

c++ delphi vcl c++builder

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

如何自动扩展所有TTreeView节点?

我想在应用程序启动时在主窗体上展开树.我怎么能这样做?我找不到相应的财产.C++ builder 2009.

delphi c++builder delphi-2009

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

如何从Borland C++ Application打开HTMLHelp(.chm)文件

我们有一个在Borland C++ Builder中开发的遗留应用程序.现在我们已将帮助文件更新为HtmlHelp(.chm)文件,我们要单击旧版c ++应用程序中的"帮助"按钮以打开.chm文件.看来我找不到一个好方法吗?有人可以帮忙吗?

chm c++builder

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

Borland开发者工作室的开源替代品

Borland开发者工作室2006是否有任何开源替代方案?

我需要这个,因为我有一个带有开发人员工作室项目(bdsproj)文件的旧c ++项目(OLD一个),我需要做一个逆向工程'那种'的东西.

或任何其他方式来实现这一目标.喜欢(将bdsproj转换为c ++ Proj(visual studio projects))

您的想法/意见非常感谢.

-Raja

c++ c++builder

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

有没有办法在使用Frames时具有类似KeyPreview的功能?

我希望在Frames中有一个KeyPreview功能,我的意思是,当输入(例如,选择框架的一个控件,或鼠标在里面)是在一个框架(这将有几个面板和其他控件) )然后由框架首先处理用户按下的键.

有没有办法做到这一点?我没有在TFrame中找到类似于KeyPreview的属性.

我正在使用RAD Studio的XE5版本,尽管我主要使用的是C++ Builder.

delphi vcl c++builder tframe keypreview

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

很容易判断当前字体是否支持unicode字符?

我正在使用Borland C++ Builder 2009,我会像这样显示右箭头和左箭头:

Button2->Hint = L"Ctrl+\u2190" ;
Button3->Hint = L"Ctrl+\u2192" ; 
Run Code Online (Sandbox Code Playgroud)

这在Windows 7上工作正常,应用程序使用字体'Segoe UI'.

在XP上我得到一个正方形而不是箭头,我在XP上使用字体'Tahoma'.换句话说,XP中的Tahoma中没有提到的Unicode字符.

有一种简单快捷的方法可以简单地检查当前使用的字体是否支持所请求的Unicode字符?如果是这样,我可以用'>'或'<'替换箭头.不完美,但足够好.我不想在这个阶段开始更改字体.

你的帮助表示赞赏

c c++ winapi c++builder

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

c ++ towupper()不转换某些字符

我使用Borland C++ Builder 2009,我的应用程序被翻译成多种语言,包括波兰语.

对于一小段功能,我使用towuppper()来大写字符串,在用户首次忽略时强调它.

原始字符串从一个语言DLL加载到utf16 wstring对象,我转换如下:

int length = mystring.length() ;
for (int x = 0 ; x < length ; x++)
    {
    mystring[x] = towupper(mystring[x]);
    }
Run Code Online (Sandbox Code Playgroud)

这一切运作良好,除了波兰,在下面的句子: "Rozumiemryzykownośćwykonania TEJ operacji"转换为"ROZUMIEM RYZYKOWNO SC的WYKONANIA TEJ OPERACJI",而不是"ROZUMIEM RYZYKOWNO SC WYKONANIA TEJ OPERACJI"

(请注意,"ryzykowność"这两个字的最后两个字符不会转换).

这并不是说这个角色没有大写的Unicode变体.Unicode字符346可以解决问题. http://www.fileformat.info/info/unicode/char/015a/index.htm

这是我过时的编译器安装中过时的库的问题还是我错过了其他的东西?

c++ c++builder unicode-string

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

Delphi中的dynamic_cast相当于什么?

在Delphi,什么是C++的等效dynamic_cast,reinterpret_cast以及static_cast(在对象上使用尤其是当)经营者?

c++ delphi c++builder

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