极其郁闷。。。破烂的BCB的VCL!!!
Delphi style classes cannot be statically defined. They have to be constructed on the heap.
Example:
void foo(void)
{
Tobject o1; // Error;
Tobject *o2 = new TObject();
}
自己写了一个组件,当然是从TComponent继承下来的了,为什么要从TObject, TComponent继承呢?不就是为了可以出现在组件面板上吗!
但是我多个进程共享这个组件,必须静态创建并且初始化,但是吗的编译器说VCL Style Classes must be constructed using operator new!!!而new的又不能多进程共享,极度郁闷!破VCL为什么要用DELPHI的,而不是标准C++的!
好像Borland一点都不放心思在C++上面!更新巨慢,都是用的现成的DELPHI或者JAVA的组件/框架!
VC呢?又太老了,整个一古董!.Net吧?现有98/2k/xp系统没有.net框架,郁闷。
说远了,还是这个问题,我当然可以不从TComponent继承,那么就可以静态创建了,但是我不就是想让组件出现在组件面板上吗!
问题点数:100、回复次数:22Top
1 楼TangSe(void_onering)回复于 2003-12-03 13:51:34 得分 0
一直用的Borland的,很喜欢它的产品,可是就是不能忍耐它的不在乎!他如果不想开发c++产品,就不要开发嘛!专心去搞它的java, delphi等等多有前途。现在搞一个破烂bcb,永远比delphi升级慢,永远没有特色,永远捡delphi的破烂,不过可能将来要捡java的破烂,不知道是进步还是。。。。Top
2 楼PPower(月亮光光,照地堂)回复于 2003-12-03 14:02:39 得分 10
啊 因為“静态的不能創建,new的又不能多进程共享,极度郁闷”
所以,BCB真是爛 。
有感,,,真是__典型爛。Top
3 楼netsys2(来电!)回复于 2003-12-03 14:08:44 得分 10
你可以主线程创建,加临界区保护,让工作线程调用。
当然,CB不采用C++写组件,的确是广大程序员的心病Top
4 楼fancy05(浪花)回复于 2003-12-03 14:28:13 得分 1
O_OTop
5 楼warton(创业群13734424 http://www.anywhy.cn)回复于 2003-12-03 14:35:58 得分 10
自己写组件的机会很少了,其它最好还是写在标准一点的cpp类,这样也好移植Top
6 楼constantine(飘遥的安吉儿)回复于 2003-12-03 14:38:13 得分 1
现在不是停止发新版本了吗?Top
7 楼ljianq(泉深水清)回复于 2003-12-03 14:51:12 得分 1
Borland对CB太不关心了。Top
8 楼chifengwatch(chifengwatch)回复于 2003-12-03 15:19:18 得分 1
唉。。。Top
9 楼aliker(吹口琴的猫)回复于 2003-12-03 15:19:27 得分 1
一个Delphi和C++的混血儿,烂!Top
10 楼nanyu(南郁(d2school.com))回复于 2003-12-03 15:21:01 得分 1
"但是我多个进程共享这个组件,必须静态创建并且初始化" 胡说八道哪?Top
11 楼TangSe(void_onering)回复于 2003-12-03 15:35:39 得分 0
to netsys2(抓住领头羊) && nanyu(南郁) :
我现在做一个系统,客户端包括多个程序/进程,都需要同服务器进行少量的通讯,我想让他们共享一个连接,于是做了一个dll,导出一个通讯类实例,多进程共享。该类中声明一个自己写的TcpClient组件,由于只能new,所以不能共享。
#pragma option -zRSHSEG
#pragma option -zTSHCLASS
class __fastcall TCommClient
{
public:
TCommClient(int noUSE)
{
JTcpClient=new TJTcpClient(NULL);
}
TJTcpClient *JTcpClient;
int xxxx;
};
//声明一个对象并且初始化
extern __declspec(dllexport) class TCommClient CommClient=0;
郁闷阿。。。Top
12 楼zhwen111(海)回复于 2003-12-03 16:12:10 得分 1
我还刚开始学.......Top
13 楼CCED136(夜林箭)回复于 2003-12-03 16:14:57 得分 1
啊!原来还有“多进程共享”这个东东索,我怎么就不知道??????
组件线程共享我知道,进程间共享数据我也知道,组件的多进程共享是什么????
哪位高手能解释一下!
Top
14 楼CCED136(夜林箭)回复于 2003-12-03 16:19:12 得分 10
还有,DLL 中的全局变量 在 WIN98 中是自动进程共享的,但在 WIN2K 环境下,每个
应用程序的实例都会独立的拥有一份 DLL 的副本,此时,DLL 中的全局变量在各自的
进程中是共享(进程内的全局变量)的,对于其他的运行实例则不可见。
可是我还是不知道 组件的多进程共享是什么????Top
15 楼TangSe(void_onering)回复于 2003-12-03 16:38:18 得分 0
to CCED136(夜林箭) :
组件不也就是一个类嘛,类不就是一个数据struct加上一些操作函数嘛,我不就是想共享数据嘛。我举个例子:
class A
{
public:
int X;
A(int x)
{
X=x;
}
};
extern __declspec(dllexport) A a=0;
这个a是可以多进程共享的。可以这样使用:
extern __declspec(dllimport) A a;
所有进程都是同一个a实例。
但是如果你声明为vcl,你就死定了:
class A : public TComponent
这个A只能new,所以没办法共享。
Top
16 楼CCED136(夜林箭)回复于 2003-12-03 16:55:00 得分 1
如果你使用 2K 的话,就算是按照你的:
===========================================
class A
{
public:
int X;
A(int x)
{
X=x;
}
};
extern __declspec(dllexport) A a=0;
这个a是可以多进程共享的。可以这样使用:
extern __declspec(dllimport) A a;
===============================================
也不可能共享 例子中的 a
除非是 98 的系统
Top
17 楼TangSe(void_onering)回复于 2003-12-03 18:14:51 得分 0
to CCED136(夜林箭):
老大,你试一下就知道了嘛。Top
18 楼ThinkX(秋天的树)回复于 2003-12-03 18:31:30 得分 10
你可以使用其他的共享方式嘛,或者修改一下程序,将共享内存从vcl class中提取出来。
使用bcb的人基本都会知道vcl class采用delphi的内存分配方式,这些应该是早就应该料想到的了,如果要共享就别想把要共享的内容放置在vcl class中。Top
19 楼yjy1001(蓝鲸--优秀得郁闷的鱼)回复于 2003-12-03 18:44:01 得分 10
嘿嘿~!
明知道烂 —— 大家 却还是在继续使用 ~
都怪 选择了C++
—— 而破烂的C++ 有没有什么好的开发工具
—— 就只有将就点使用BCB啦Top
20 楼geniusdhc(为了东京大屠杀,努力奋斗+抵制日货)回复于 2003-12-03 19:20:00 得分 1
为了钱,还是要学的.Top
21 楼PPower(月亮光光,照地堂)回复于 2003-12-03 19:58:04 得分 30
記得好象C++有個語法,可以在指定的內存區域生成對象,即把對象new到某個內存區域中去。不過沒試過能不能在指定的內存區域生成VCL對象,不過可能不成。Top
22 楼TangSe(void_onering)回复于 2003-12-04 11:03:43 得分 0
我修改类不从TObject/TComponent继承,当然可以共享了。
只是郁闷!为什么bcb不用标准c++的frameworksTop
相关问题
- delphi的vcl、rtl和bcb的vcl、rtl是同一个文件吗?
- bcb怎么建非vcl的gui程序?
- I Want the VCL libs for BCB 's WEB Site (or FTP sites )links. who tell me .
- 请问bcb怎么使用delphi的vcl控件
- 修改了BCB的VCL源码如何从新按装它哪?
- 用bcb编程是否一定要懂api和vcl呢?
- BCB的前途不明朗?BCB会有下一个版本吗。Borland会为BCB改写VCL类库吗?
- 有关BCB中派生VCL类及动态地创建控件的问题
- 多线程+TCP+动态VCL组合难题!BCB高手请看! 100分!
- 请教一个在bcb中直接超越vcl响应windows消息的例子




