如何在C++Builder中使用全局变量

本文详细解释了如何在C++Builder中使用全局变量。

作者:yifei(尹加俊)

信箱:yifei1900@163.com

如何在C++Builder中使用全局变量?

(1).如果我在一个公用的头文件中定义一个变量,在其它单元中可以直接使用它吗?如下:

  //--------------------------------Globals.h----------------------------------
   #ifndef GlobalsH
   #define GlobalsH
   //---------------------------------------------------------------------------
   #include <Classes.hpp>
   //---------------------------------------------------------------------------
   AnsiString UserName;
   //---------------------------------------------------------------------------
   #endif

答案是:或许可以吧。你得到的结果是:只要你引用了这个头文件N次,那么就会得到N+1次编译器警告,选择你这个变量重复定义,在你引用这个变量的单元中,确实可以使用这个变量,但是在一个单元中对它赋值,在另一个单元中确得不么,也就是说,它根本就不是全局的,编译器的处理方法是,在每个单元中重新以这个名称声明了一个变量而已。

(2).如果我在工程文件.cpp中声明一个变量,在其它单元中可以直接使用它吗?如下:

  //---------------------------------------------------------------------------
   #include <vcl.h>
   #pragma hdrstop
   //---------------------------------------------------------------------------
   USEFORM("TMainForm.cpp", MainForm);
   //---------------------------------------------------------------------------
   AnsiString UserName;
   //---------------------------------------------------------------------------
   WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
   {
     try
     {
       Application->Initialize();
       Application->CreateForm(__classid(TMainForm), &MainForm);
       Application->Run();
     }
     catch ... //这里省略了一部分
     return 0;
   }
   //---------------------------------------------------------------------------

答案是:不可以。但是这确实是定义全局变量的正确方法之一。在工程文件.cpp中声明了变量,如果想在其它单元中使用它,必须使用extern关键字,来声明这个变量是外部的,所以,在需要使用这个全局变量的单元中,使用extern AnsiString FileName就可以引用一例中的全局变量了。

时间: 2024-10-03 22:42:53

如何在C++Builder中使用全局变量的相关文章

如何在C++Builder中使用Delphi控件

使C++Builder使用DelphiVCL类库的方法基于Windows中较通用的DLL方式.在实际应用中 找到了将VCL控件转化为DLL库,在C++Builder动态调用DLL.此法适用于非可视VCL控件. 假令在Delphi中有一Sample控件,有属性Actived.Pro1.Pro2,欲将这个控件转到 C++Builder中使用.一.Delphi中DLL的制作在Delphi中新建一DLL项目SampleDLL,时在此项 目中Create一个新的类TTtempcomp基类为TCompone

如何在C++ Builder中检测硬件

在我们编写的程序中常常要和硬件打交道,那么如何在程序中确定系统中是否有该 设备,它的运行状态又是怎样的呢?对于初学者来说,这个问题常常不好解决,其实只需 简单地利用几个API函数,硬件的问题并不神秘.下面就让我们一起看看在C++ Build er中是如何检测硬件的. 1. 检测CPU的型号 先让我们从最简单的做起,看一看自己的CPU型号.首先,在C++ Builder中画 出图1所示的窗体,在下面的几个例子中我们将一直使用这个窗体作示范,它包括一个用 来激活测试的Button和一个用来显示结果的

如何在C++ Builder中自定义属性[properties]

Borland C++ Builder 对 C++ 进行了扩充,也可以象 Delphi 中一样自定义类属性. 对于简单类型的属性,可以如下定义: class TSome { protected: int a; int b; int s; int GetSum(void){ return s = a + b ; } void SetSum(int s){ this->s = s ; } public: //...其它代码 __property int sum={read=GetSum,write=

在C++Builder中使用Delphi控件

Delphi的出现将一大批程序员带入了Windows下的可视化编程,为一些C&C++的死党程序员所羡慕.感叹.直到C++Builder的出现这些Programer才用到了梦寐以求的编程工具,也将一些不得已"投敌"到Delphi下的程序员又拉回到C++的怀抱.她正真将Windows下的可视化编程和面向对象编程语言有机的融合在一起.但是由于C++Builder面市时间较短固而可用的控件不多,而且控件的使用也只针对某一版本,相互之间的可互用性不好,除非你有SourceCode:对于D

在C++ Builder中使用Compress Html Help

如何在C++Builder中使用Compress Html Help (.chm文件): 微软提供的HTML HELP Workshop中包含了htmlhelp.h和htmlhelp.lib,用于在程序中使用Compressed Html Help.但其中htmlhelp.lib不能直接在BCB中使用.在BCB中的使用方法如下: implib hhctrl.lib hhctrl.ocx:创建HtmlHelp的库文件. 在程序中include <htmlhelp.h> 在工程中加入第一步创建的h

C++ Builder中如何保持控件的位置及大小

C++ Builder/Delphi是Inprise(原Borland)公司广受欢迎的可视化C++/Pascal开发工具,利用它可极大地加快应用程序的开发速度.但是,也正因为其是可视化编程工具,将控件拖放到Form后,控件的位置就固定死了.随着Form的大小或屏幕分辨率的改变,控件和Form本身的位置往往变得非常混乱.本文将介绍一些正确定位控件及Form的方法. 利用OnResize事件改变控件位置及大小 C++ Builder/Delphi中的Form控件有一个OnResize事件,Form的

在C++Builder中使用Delphi文件

在使用多种语言和工具编写一个应用程序时,最为困难的事情之一是创建和维护定义文件的接口.幸运的是,C++Builder把这一切都替你做好了.当在项目中加入一个.PAS文件时,C++Builder会自动创建一个.HPP文件. 在CPP文件中,可以调用Pascal的函数.对象等.这为Delphi的程序员移植全部或部分的项目提供了便捷的途径. 下面是在C++Builder中使用Delphi代码的原则: 1.在C++Builder的窗体编辑器中,不能修改或编辑Delphi的窗体.但是可以修改Delphi窗

C++ Builder中保持控件的位置及大小

C++ Builder/Delphi是Inprise(原Borland)公司广受欢迎的可视化C++/Pascal开发工具,利用它可极大地加快应用程序的开发速度.但是,也正因为其是可视化编程工具,将控件拖放到Form后,控件的位置就固定死了.随着Form的大小或屏幕分辨率的改变,控件和Form本身的位置往往变得非常混乱.本文将介绍一些正确定位控件及Form的方法. 利用OnResize事件改变控件位置及大小 C++ Builder/Delphi中的Form控件有一个OnResize事件,Form的

如何在c语言中控制时间啊,

问题描述 如何在c语言中控制时间啊, 例如,在运行时需要输入,如果过了时间,就不允许输入,该怎么弄,求大神帮忙 解决方案 这个问题可以用双线程也可以用双进程. 假设用双进程, 父进程计时间,到时间了就向子进程发送信号. 子进程收到进程不管scanf(当然或者其他输入数据的函数也可)是否收到数据 子进程一律终止. 事例代码如下: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <