我爱builder

C++Builder 程序员博客

Archive for 04月, 2009

5.1到了散分
另外私信里有人发什么csdn的幸运用户中奖信息太无聊了
来csdn搞这个
大家注意一下

这个属于RP问题吧
好像是随机的
就当练练手气
快买彩票去吧

挫。总有人做这种无聊的事。

會注意~

前两天有个号称出版社的发私信给我,也不知道是不是骗子。

….骗子还是挺多的…

哎。。。林子大啊

jf…

引用 5 楼 ccrun 的回复:
前两天有个号称出版社的发私信给我,也不知道是不是骗子。

一律不理会,多次打扰的就回一个字:滚

lz说的很早之前就遇到了,出版社社的今天才收到,最近都没上来。

骗子无处不在.QQ类似的也有.
现在手机短信上也有让你往某某银行帐号汇款的骗子,大家注意.

接分

出版社的话,要求邮递营业执照的复印件过来.

诚信危机

出版社那个人用的Email居然是sohu的免费信箱,感觉很不专业咯。我问他是哪个出版社的,然后就没音信了。估计是想骗真实的联系方式。

快下班了 揭帖 大家五一快樂

  • Filed under: C++ Builder
  • 这个控件06年在BCB6下安装成功过,之后再没用过了,现在又想用该控件,但在BCB2009下不知该怎么安装,在ccrun下载了控件包,目录一大堆,请高人指点安装步骤及方法

    DevExpress控件里就一个安装程序
    你直接安装就行了
    (在选择的时候 选择CB2009)

    有安装程序的。

    我在老妖的网站下载的没有哦

    引用 4 楼 controstr 的回复:
    我在老妖的网站下载的没有哦

    不会吧 我也是在他那里下载的:
    http://www.ccrun.com/view.asp?id=506

    有安装程序的

    请问安装程序在哪个目录下?

    把这个帖子顶起来
    同问

    之前老妖的网站下DevExpress有几个版本的
    都有安装程序的 昨晚看了一下 没有了
    你要的话 留下联系方式

    多谢,QQ:47413260


    看了一下
    原来你已经在我的QQ里面呢了

    呵呵,

    32012436我也要一个

    我也要,谢谢 276171216

  • Filed under: C++ Builder
  • 本人是BCB初学者,学了一年的BCB以为自己已经掌握的差不多了。没想到有人叫我写个游戏修改器给他,把我难住了,望高手们给个源代码给本菜鸟参考参考!先在这里说声谢谢了!

    UP,有前途

    fyi

    http://dev.21tx.com/2005/05/30/13072.html

  • Filed under: C++ Builder
  • 不好意思我初学者,我想问BCB更新返回结果值 就是更新成功了!怎么弄啊!

    如果是自定义的函数,在前加上返回值类型bool;
    函数体最后加上return true;

    如果你是在组件的事件中写的话,可以使用一个全局变量接收返回值。

    谢谢朋友!

  • Filed under: C++ Builder
  • 我最近在学数据库编程
    书上的一段代码要调用FormExist函数:
    TForm* TfmMain::FormExist(AnsiString szCaption)
    {
    for(int i=0; i <this->MDIChildCount; i++)
    {
      TForm *pForm = this->MDIChildren[i];
      if(pForm->Caption == szCaption)
    return pForm;
    }
    return NULL;
    }
    复制后运行 出现错误
      [C++ Error] Main.cpp(25): E2316 'TfmMain::FormExist(AnsiString)' is not a member of 'TfmMain'
      [C++ Error] Main.cpp(40): E2268 Call to undefined function 'FormExist'
      [C++ Error] Main.cpp(40): E2034 Cannot convert 'int' to 'TForm *'
      [C++ Error] Main.cpp(45): E2303 Type name expected
      [C++ Error] Main.cpp(45): E2034 Cannot convert 'int *' to 'TForm *'
      [C++ Error] Main.cpp(45): E2379 Statement missing ;

    我找不到FormExist函数
    请高手指点指点 谢谢!!

    FormExist(AnsiString szCaption)  未在 TfmMain 中宣告

    引用 1 楼 ccrun 的回复:
    在.h文件中,将FormExist的声明添加到TrmMain类中,如:

    private:
        TForm* FormExist(AnsiString szCaption);

    public:
    ….


    成功了 谢谢!!

    引用 2 楼 jame2001 的回复:
    FormExist(AnsiString szCaption)  未在 TfmMain 中宣告

    谢谢!!

  • Filed under: C++ Builder
  • 1、我的程序中有一些文件是需要多个线程都要处理的,大概是这样的:部份文件系统中一些线程写入,另外一些线程读取或删除,
      然后一些文件是线程写入,用户通过主线程来查询,我现在想用TMultiReadExclusiveWriteSynchronizer来进行同步,可
      否?有些文件打开时即可读也可写,该用BeginWrite?还是BeginRead?还有一些其他的文件操作,该用什么函数?

    2、我的程序中有一些变量p,多个线程都用到了,我想用一个TCriticalSection来进行同步,把这个TCriticalSection参数传
      到多个线程中,然后传到各个类中进行同步可否?如:TCriticalSection cs, 我在主线程中定义了cs,然后传入TThread
      线程,然后在线程中调用一些类时,把cs也传进去,如F(cs,p),请问:在定义F时需要用cs吗?如:
        // 这里是否要用cs->Acquire();p是需要互斥的变量,在TF的构造函数中将p赋给TF中的P,即P=p
        TF *f = new TF(cs, p);
        // cs->Release();

    谢谢,非常急

    有些文件打开时即可读也可写?不好做啊。

    有个文件是程序读完后又会写回去一些数据,我函数用的是:iFileHandle = FileOpen( strFileName.c_str(), fmOpenReadWrite );该怎么处理呢?

    建议将每一个类都做成线程安全的,也就是在对每个成员变量进行操作时,均加锁。如果这个成员本身是个线程安全的类型,就不用加锁了。
    注意不要提供public的成员变量,而是提供set和get函数来提供访问。对于简单数据类型的访问,可以不加锁,比如你举的if ( p ) 的例子。

    那像这种 bool P = p 需要加锁吗?p是多个线程都要访问到的,我的程序有些变量没办法完全封装在类里面,还有对文件操作怎么做呢?用TCriticalSection好还是TMultiReadExclusiveWriteSynchronizer好,谢谢

    请问:TCriticalSection可以嵌套使用吗?如:

    TCriticalSection* cs;
    cs = new TCriticalSection();

    cs->Acquire();
    int iHand = FileOpen(…) ;
    ….
    for ( int i = 0; i < 10; i++ )
    {
      cs->Acquire();
      int iNewHand = FileOpen(…) ;
      ….
      FileClose(iNewHand);
      cs->Release();
    }

    FileClose(iHand);
    cs->Release();

    这样可以吗?谁能救救我啊?

    bool P = p;个人认为不需要加锁,当然加了也不会有问题。

    如果有全局变量,那可以搞一个全局的锁。也可以把所有的全局变量封装到一个类里,把这个类做成线程安全的,然后搞一个这个类的实例作为全局变量来用。

    可以把对文件的操作简单封装成一个类,并对打开关闭读写等函数加锁。要注意多个线程读写完文件后,文件当前位置会变化,要seek到正确的地方再操作。

    TMultiReadExclusiveWriteSynchronizer不了解,只用TCriticalSection应该也够用了。

    TCriticalSection我没看过源代码,不过从名字看,应该是windows api中CriticalSection的封装。如果在多个线程中连续2次调用Acquire(),后面一次会阻塞,直到第一次调用对应的Release()后为止。如果在同一个线程中,连续2次调用Acquire(),后面一次会不起作用。例如:
    TCriticalSection* cs;
    cs = new TCriticalSection();

    cs->Acquire();//——————(1)
    int iHand = FileOpen(…) ;
    ….
    for ( int i = 0; i < 10; i++ )
    {
      cs->Acquire();//—————-(2)
      int iNewHand = FileOpen(…) ;
      ….
      FileClose(iNewHand);
      cs->Release();//—————-(3)
    }

    FileClose(iHand);
    cs->Release();//——————(4)

    调用(1)后,会进入临界区,调用(2)时不起作用,调用(3)时离开临界区,调用(4)时不起作用或出错。
    调用(2)时肯定不会阻塞,但会不会增加一个引用计数,我也记不清了。调用(3)时,是完全离开了临界区,还是减少引用计数,记不请了。调用(4)时是不起作用还是出错,记不请了。这些你都可以看下msdn,里边写得很详细。

    非常感谢,我有个文件是多个线程写入,一个线程读取,用TCriticalSection也可以吗?

    我是对所有文件都用了一个TCriticalSection,这种方式是不是性能不是很好?

    用TCriticalSection可以。
    每个文件一个TCriticalSection性能当然更好些,如果把对文件的操作封装成线程安全的类,以后的重用性也都好些。

    如果多个文件用一个TCriticalSection的性能,能够满足当前的需求,那么不改也可以,先尽快完成开发以保证进度,然后再进行重构优化。

    谢谢

  • Filed under: C++ Builder
  • T1(表1:商品表)                              T2(表2:购物流水表)                   

    自动编号        商品名                        自动编号        单据号      商品名
                       
    1              方便面                        1              001      方便面
    2              茶叶                          2              001      香皂
    3              面包                          3              001      牛奶
    4              口香糖                        4              002      茶叶
    .              ..                        5              002      面包
                                                  6              003      玻璃杯
                                                  .              ..      ..

    请问利用上面的两个表如何生成一个临时表,临时表内容包括:

    临时表包括的字段有:自动编号,及所有T1表distinct的商品名合并为T3表的列,内容为如下:
    即:查找所有T2表不同的单据号(即存在一单据号即在T3表中添加一行),单据号下如果购买该
    商品就在表T3该商品名列下标上1,没有则为0,请问如何创建并添加该临时表。
    注:T1,T2表都有多条记录。

    T3(临时表)

    自动编号      方便面      茶叶      面包      口香糖    牛奶    玻璃杯    ..
    1            1          0        0        0        1      0        ..
    2            0          1        1        0        0      0        ..
    3            0          0        0        0        0      1        ..
    .            ..          ..      ..      ..      ..      ..       

    大概明白LZ的意思了
    T3表的列就是T1表裏distinct的内容 T1表裏有多少不重復的T3表裏就有多少列(第一列不算)
    T3表的第一列其實應該是T2表的不重復的單據號,T2表有多少個不重復的單據號就有多少行
    其實這個已經沒有必要用到資料庫了
    首先循環T1表distinct的内容把列放好
    然後循環T2表這裡有兩個判斷,如果單據號已經有了,就不增加行,如果沒有就增加行,然後去循環列,如果列頭和T2表的商品名一樣,數據+1

    引用 2 楼 Ring_Pt 的回复:
    大概明白LZ的意思了
    T3表的列就是T1表裏distinct的内容 T1表裏有多少不重復的T3表裏就有多少列(第一列不算)
    T3表的第一列其實應該是T2表的不重復的單據號,T2表有多少個不重復的單據號就有多少行
    其實這個已經沒有必要用到資料庫了
    首先循環T1表distinct的内容把列放好
    然後循環T2表這裡有兩個判斷,如果單據號已經有了,就不增加行,如果沒有就增加行,然後去循環列,如果列頭和T2表的商品名一樣,數據+1

    up

  • Filed under: C++ Builder
  • BCB6.0为什么没有“复位”键?

    菜鸟初学
    在CBC6.0的菜单栏上
    对于程序的运行:
    有运行键
    有暂停键
    奇怪–为什么没有“复位”键?
    谢谢!

    引用 1 楼 ccrun 的回复:
    有啊,只是默认没有显示在工具栏而已。有三种方法使用Reset

    1. 点击Run菜单下的Program Reset
    2. 按Ctrl + F2
    3. 右键点击工具栏选Customize…–>Commands–>Run–>拖动Program Reset到工具栏某一位置就可以了。

    O(∩_∩)O哈哈~
    俺试一试,
    第一条:俺刚学会就用这个关闭程序,感觉不太方便
    第二条:不能用,没有反映,不知道是咋回事,安装在两台电脑都不行
    第三条:高兴,真灵啊,小疑惑,这个很常用的键,为什么默认不选,怕不小心误操作?

    多谢
    俺菜鸟一定得好好学习,感谢论坛老大啊

    第二条你按了没反应可能是Editor Options中,Key Mappings选择的是非缺省。看一下Run菜单下Program Reset右面的快捷键显示什么。

    受用了,感谢。

  • Filed under: C++ Builder
  •     我有一个用C++ Builder6.0做的程序,我将他编译完成后将.EXE和.obj拷到一个没有C++环境的机器上运行时不能运行,好像是不能连接数据库,当我安装上c++时就能连接,程序运行正常。这是为什么呢?我的数据库用是的SQL2000,连接方式是通过读取文件目录的.ini配置文件来获取数据库等信息的。
        请高手帮帮忙,急!急!………………

        谢谢!

    都须要那些DLL文件能说一吗?

    你拷贝.obj文件是什么目的啊?有这个必要么?如果生成exe时没有打包bpl库,那么发布程序的时候就要把这些库发布到目标机器的系统中,还有数据库程序也需要一些动态链接库,你安装了c++环境其实就是把应用程序需要的库文件发布到了目标机器.

    你在没有c++环境的机器中运行,是不是弹出对话框,提示缺少什么文件?

    告诉你一个最简单的办法:把你机器上borland c++文件夹全部剪切走,然后启动你开发的软件,提示缺少什么文件你就到borland文件夹下面查找,放到你的exe所在的文件夹,直到正常运行,一般情况下只是几个文件而已.具体需要那些文件还是要看你应用程序的类型以及编译选项.

    怎样发布C++ Builder 我也不太清楚 我不是做C++的,能教教我吗。
    我的QQ:419613023

    我已经很久不做程序设计了,以前做得比较多,谈不上教不教的,发布这个程序比较简单,你在网上搜一下,应该不少的.我在帖子上的疑问还没有人解决呢,愁人.

    呵呵 谢谢啊

    在没有Borland C++ Builder 6.0环境的机器运行,需要配置:
    1、Project/Option/Packages/Run with runtime packages 的勾去掉
    2、Project/Option/Linker/Uses dynamic RTL 的勾去掉
    3、Project-Options中,把Packages页中的“Build with runtime packages”的勾去掉

    楼上的方法我也试过了不过也是不行啊

    程序运行正常
    连不上数据库
    证明你发布好了
    只是配置连接服务器的运行参数错误

    你连接数据库用的BDE 还是ADO?
    如果是BDE控件组的话 还需要配置BDE

  • Filed under: C++ Builder
  • 菜鸟:如何让“屏幕”停留下来?
    BCB6.0-文件-新建-其他-Consol Wizard-确定-C++ -OK //得到如下附录的CPP文件
    RUN//一个黑色屏幕一闪而过
    将光标停在 return 0;
    运行-运行到光标处-
    RUN//此时黑色屏幕能够停留

    问题:程序中加什么代码,黑色屏幕可以直接RUN后停留?
    谢谢!

    附录: 

    //—————————————————————————

    #pragma hdrstop

    //—————————————————————————

    #pragma argsused
    int main(int argc, char* argv[])
    {
            return 0;
    }
    //—————————————————————————

    引用 1 楼 zhouzhangkui 的回复:
    C/C++ code#pragmahdrstop//————————————————————————–#include <iostream>usingnamespacestd;//—————————————————————————#pragmaargsusedintmain(intargc,char*argv[])
    {
            system("PAUSE");return0;
           
    }

    O(∩_∩)O
    高兴
    谢谢
    晚安

  • Filed under: C++ Builder
  • 类别

    最新

    标签

    链接


    存档