Delphi中的未初始化变量是否保证具有任何特定值
由于C++ Builder一般遵循Delphi的设计,因此C++ Builder中未初始化的变量保证具有任何特定的价值
我继承了一些C++ Builder代码,这些代码很大程度上取决于成员变量的零初始化,并试图弄清楚语言是否能保证这一点.
当Windows首次被提供给程序的堆栈或堆时,Windows是否保证内存是零初始化的?(编辑:我意识到程序会在执行时覆盖内存,所以它不能继续依赖于此;我只是想弄清楚我观察到的行为.)
我有一个错误导致我的应用程序只是消失而没有错误消息或类似的东西.该应用程序刚刚从屏幕上消失,它不再列在任务管理器上.
该应用程序是一个C++ Builder应用程序(CBuilder2007),我已经尝试了所有我想到的尝试捕获此错误.它很少发生,它从未在我的机器上崩溃,只在我们在办公室的测试机器中崩溃过一次.对于我们的一个客户来说,它更频繁地发生,但我们还没有找到实现它的方法,或者找到发生这种情况的情况.这是一个沉重的多线程应用程序.
我在这个应用程序中启用了madExcept,但它没有捕获任何东西.我已经使用set_terminate和set_unexpectedRTL例程添加了处理程序,没有任何运气.
我所拥有的唯一信息来自我所做的"加载器应用程序"包装器,以从主应用程序获取返回代码.它与C0000005代码一起退出,我认为这意味着发生了访问冲突.奇怪的是,如上所述,甚至没有Windows错误框或类似的东西.
问题是:任何试图抓住这个想法的想法?正如我甚至没有一个线索,其中这可能发生(我有很多周围的应用程序登录的,但"跟踪"应用程序崩溃之前还没有导致任何地方),我的想法与set_terminate和set_unexpected程序是让一个堆栈跟踪,试图查看错误的生成位置,但到目前为止这些例程根本没有被调用(至少在我办公室这里发生过这种情况)
提前致谢
[Update 22.Sept.2009]使用AddVectoredHandlerException我能够从崩溃中获得一个callstack,现在我可以开始尝试隔离并修复bug.谢谢!!!
我正在为C++ builder寻找一个VCL组件.它应该最好有一个带拖放功能的工具栏.
我想定义一个建筑物或区域(可能不是矩形)并将其拆分为"房间"(或区域,或任何您想要称之为的区域).而且我希望能够将"门口"(或通道等)从一个房间放入其邻居.
有这样的事吗?优选免费.
谢谢.
如果有人想知道答案,我已经通过TMS验证了图表工作室确实可以做到这一点.
虽然他们说"你可以使用TMS Diagram Studio,但创建新的自定义块(如L形房间)并不复杂",所以我仍需要验证它是否可以处理三角形和丢失的鹦鹉(多边形).
如何在DBGrid中获取选定的行索引?
所以我使用ADOQuery-> DataSource-> DBGrid
我在Windows 7上遇到了VirtualTreeView组件的问题.我添加了一个TVirtualStringTree并使用OnGetImageIndex事件来分配ImageIndex,它始终处于调试器非零值.
VirtualStringTree使用带有16x16图标的TImageList作为Images属性.
在Windows XP上它可以正常工作,在Windows 7上,它在正常图标的顶部与TImageList的索引为0的图标重叠.我在Windows 7上运行与在XP上相同的程序,因此代码是相同的,但绘图是不同的.
此图片说明了问题:
virtualtreeview问题http://i42.tinypic.com/6sb8ko.jpg
灰色三角形图标的索引为0,文件夹图标的索引为5.
这是VirtualStringTree中的错误吗?我可以以某种方式避免这个吗?
我正在使用存储库中的最新VirtualTreeView版本.
我通常在VB6中编程,但我相信我可能会被限制在活动表单中的细节.我也有使用c ++和delphi的codegear 2009,我是从配偶那里得到的,但我对Delphi只有一点经验,而且根本没有使用c ++,但至少我有它们,如果其中一个程序需要用来实现我的我想做.我希望能够做类似的事情
IF pixelVar(x,y) = 'Red' ( or 'RGBvalue or whatever the correct colour representation)
THEN
do something
END IF
Run Code Online (Sandbox Code Playgroud)
我想编写一个程序来保持扑克手的统计数据,并希望程序在我玩扑克客户端程序时运行,自动识别像素颜色和位置的卡片并将其输入数据库.我认为,如果我可以轻松访问像素信息,那么制定模式以识别卡片的数量和适合度并不会太困难.任何帮助都是巨大的.谢谢.
这样的文件内容
'COGT','COGT','COGENT ORD'
'COG','COG','CABOT OIL & GAS ORD'
'COGZF','COGZF','COGSTATE ORD'
'COHG','COHG','CHEETAH OIL & GAS ORD'
'COHIQ','COHIQ','COHO ENERGY ORD'
'COHM','COHM','ALL AMERICAN GROUP ORD'
'COHN','COHN','COHEN ORD'
'COHR','COHR','COHERENT '
Run Code Online (Sandbox Code Playgroud)
但我需要将其放入包含名称列的mysql数据库中,描述也可以看到第一和第二个相同的列,因此我只需要一个名称作为名称3rd就可以了。
NAME | DESCRIPTION
cogt | cogt ord
cog | cabot oil
Run Code Online (Sandbox Code Playgroud)
如果您有任何想法请与我分享
EnumAllWindowsOnActivateHint是TApplication的一个属性,根据帮助,应该在C++ Builder - Codegear 2007中公开.事实并非如此.
我的困难在于我需要将它暴露给C++,或者为我的应用程序将其设置为true.
因此,有不同的途径来实现这一点,我尝试过的事情可能做错了:
我无法升级到较新版本的Codegear,因为这会破坏应用程序所依赖的RTTI行为.
建议?解决方案?
在Embarcadero RAD Studio XE3中链接C++项目(关闭使用运行时包)时,我有时会收到表单错误:
[ilink32 Error] Fatal: Unable to open file 'FOO.OBJ'
我明白是什么原因造成的.这是因为代码中有一个隐式引用(通常是通过a #pragma link)导致链接器需要该单元FOO.
如果我查看VCL源代码,我通常可以找到一个FOO.PAS编译成一个FOO.DCU.这是链接器正在寻找但无法找到的已编译单元.
我知道这个编译过的单元存在于一个VCL库中,但我不知道如何找出哪一个.例如,VCL.LIB和RTL.LIB和BCBIE.LIB(等等)包含哪些单位?
给定一个单元名称,我想知道哪个VCL库包含它.如果我知道,我可以将相应的.lib文件添加到LinkPackageStatics我的cbproj文件中的标记中,所有内容都可以正常链接.
如果只是在该单元的文档中显示它会很好,但它不存在.目前,我必须使用试验和错误来找到合适的库,但肯定有一个公开可用的列表,显示哪些VCL单元链接到哪些VCL库.
我在哪里可以找到这样的列表?
(顺便说一句,我知道在IDE的正常使用中,开发人员不需要知道这一点.IDE通常会为您解决这个问题.但是我发现当.cbproj合并错误时我偶尔会需要这些信息或者手动编辑不正确或出于超出IDE正常使用范围的其他一些原因.)
编辑:谢谢!tlib正是我所需要的.我在shell脚本上很糟糕,但我写了一个小shell脚本,它输出了它所包含的每个单元名称旁边的库名:
#!/bin/bash
while [ "$1" != "" ]; do
name=$(basename "$1")
tlib /L $name | grep size | awk -v name=$name '{print name, "\t", $1}'
shift
done
Run Code Online (Sandbox Code Playgroud)
然后我可以通过在我感兴趣的所有.libs上执行它来调用脚本,然后为我正在寻找的单元(如SysUtils)进行grepping:
find . -name "*.lib" -exec libunits.sh {} \; | grep SysUtils
Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题。如何在不使用循环的情况下获取CheckBoxListBox中已检查项目的计数?