CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

极其郁闷。。。破烂的BCB的VCL!!!

楼主TangSe(void_onering)2003-12-03 13:46:43 在 C++ Builder / 基础类 提问

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消息的例子

关键词

  • c++
  • 组件
  • vcl
  • bcb
  • delphi
  • 数据
  • 系统
  • 共享
  • 进程
  • 破烂

得分解答快速导航

  • 帖主:TangSe
  • PPower
  • netsys2
  • fancy05
  • warton
  • constantine
  • ljianq
  • chifengwatch
  • aliker
  • nanyu
  • zhwen111
  • CCED136
  • CCED136
  • CCED136
  • ThinkX
  • yjy1001
  • geniusdhc
  • PPower

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo