提 个 菜 鸟 问 题 , 别 笑 我

时间:2021-09-01 16:18:47
我 在 主 程 序 中 定 义 了 两 个 变 量 ,现 在 我 要 在 子 程 中 调 用 他 们 , 怎 样 实 现

11 个解决方案

#1


C++没有子过程的概念,如果你要说在其他函数重要引用,调用是通过参数形式传给他就可以了

#2


BCB和Dephi不同:BCB中只有函数;Dephi中有函数,也有过程,如果只是想调用这两个值的话,用一个函数足可以解决了,如果想通过调用,改变这个两个变量的值的话,则要通过指针实现啰!~~~~~~

#3


根据你想改变变量值与否,选择传值或者传地址

#4


也可以使用全局变量来实现啊

#5


是否可以将变量定义在TForm类的public下面?

#6


将这两个变量写到TForm1类的public区,在别的地方用时包含一下主程序的头文件,即可使用,或是定义全局,如果实在不行就声明成外部变量extern也行

#7


可以定义在public下面,
楼上说的extern也可以

#8


嗯,在public下面定义就include
用extern定义就在主程序下 int a;
其他文件下定义 extern int a;
就好了

#9


首先上面的朋友都说了,BCB是没有子程序的概念的,C语言中,只有函数,可以说,C语言就是数据定义加上函数。所有的功能都是用函数的形式实现的。这种无子程序的方式决定了C语言的封装性好。

“我在主程序中定义了两个变量,现在我要在子程中调用他们”
因为没有子程的概念,所以,你的话就不怎么好回答了。

当然,类似的要求我们是常常见到的。常用的方法有以下几类:
1、最菜的办法:在窗体上放一个Edit(或Label),让他不可见,然后嘛,嘿嘿你随时可以改这个Edit的Text值,这样,只要你的程序代码能正常调用它,就能对它的值进行操作啦。这是我第一个月用BCB时使用的笨方法。如果是别的窗体要调用这个值,可以把Edit所在的头文件引用一下,然后用Form->Edit->Text的方法引用。(如Form1->Edit1->Text)
2、稍先进一点点的办法:在一个窗体的类中的公共部分放一个自定义的变量,如:
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
        int ABC;//自已加入的公有变量
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

请注意,上面的代码在Unit1.h中(请在编程窗中点击切换哦)。
使用方法与第一种方式类似,不过,在实质上,有些不同了,这回没有用控件,而是在一个类里面加入了自个定义的一个变量了。

#10


当然,上面的做法都是菜鸟级的。
不过,虽然是菜鸟级的,但是,第二种方法是一个非常好的办法,就是现在我也经常使用此法,原因是,直观,保险,也不会有另外的不必要的内存开销,出问题的可能性很小。

那么,高手的做法是什么呢?
高手的做法是定义公有变量。

例:
//头文件中
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
extern int ABC;//自已加入的公有变量
#endif

CPP文件中
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int ABC;//自已加入的公有变量
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

调用的方法是,本窗体调用的话,直接使用ABC变量就可以了。
非本窗体调用的话,加入此窗体的头文件后,再使用此变量。



#11


注意:上面的ACB只是一个示例,ABC这东西BCB已有定义哦。
不能照抄哦,要抄,把ABC改成别的名,呵呵。

此外,在一个函数内部,如果你另外定义了一个名称相同的变量的话,操作针对的将是内部的变量,这点你要注意。

此外,建议你参看一些C语言的变量有效范围的资料。

#1


C++没有子过程的概念,如果你要说在其他函数重要引用,调用是通过参数形式传给他就可以了

#2


BCB和Dephi不同:BCB中只有函数;Dephi中有函数,也有过程,如果只是想调用这两个值的话,用一个函数足可以解决了,如果想通过调用,改变这个两个变量的值的话,则要通过指针实现啰!~~~~~~

#3


根据你想改变变量值与否,选择传值或者传地址

#4


也可以使用全局变量来实现啊

#5


是否可以将变量定义在TForm类的public下面?

#6


将这两个变量写到TForm1类的public区,在别的地方用时包含一下主程序的头文件,即可使用,或是定义全局,如果实在不行就声明成外部变量extern也行

#7


可以定义在public下面,
楼上说的extern也可以

#8


嗯,在public下面定义就include
用extern定义就在主程序下 int a;
其他文件下定义 extern int a;
就好了

#9


首先上面的朋友都说了,BCB是没有子程序的概念的,C语言中,只有函数,可以说,C语言就是数据定义加上函数。所有的功能都是用函数的形式实现的。这种无子程序的方式决定了C语言的封装性好。

“我在主程序中定义了两个变量,现在我要在子程中调用他们”
因为没有子程的概念,所以,你的话就不怎么好回答了。

当然,类似的要求我们是常常见到的。常用的方法有以下几类:
1、最菜的办法:在窗体上放一个Edit(或Label),让他不可见,然后嘛,嘿嘿你随时可以改这个Edit的Text值,这样,只要你的程序代码能正常调用它,就能对它的值进行操作啦。这是我第一个月用BCB时使用的笨方法。如果是别的窗体要调用这个值,可以把Edit所在的头文件引用一下,然后用Form->Edit->Text的方法引用。(如Form1->Edit1->Text)
2、稍先进一点点的办法:在一个窗体的类中的公共部分放一个自定义的变量,如:
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
        int ABC;//自已加入的公有变量
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

请注意,上面的代码在Unit1.h中(请在编程窗中点击切换哦)。
使用方法与第一种方式类似,不过,在实质上,有些不同了,这回没有用控件,而是在一个类里面加入了自个定义的一个变量了。

#10


当然,上面的做法都是菜鸟级的。
不过,虽然是菜鸟级的,但是,第二种方法是一个非常好的办法,就是现在我也经常使用此法,原因是,直观,保险,也不会有另外的不必要的内存开销,出问题的可能性很小。

那么,高手的做法是什么呢?
高手的做法是定义公有变量。

例:
//头文件中
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
extern int ABC;//自已加入的公有变量
#endif

CPP文件中
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int ABC;//自已加入的公有变量
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

调用的方法是,本窗体调用的话,直接使用ABC变量就可以了。
非本窗体调用的话,加入此窗体的头文件后,再使用此变量。



#11


注意:上面的ACB只是一个示例,ABC这东西BCB已有定义哦。
不能照抄哦,要抄,把ABC改成别的名,呵呵。

此外,在一个函数内部,如果你另外定义了一个名称相同的变量的话,操作针对的将是内部的变量,这点你要注意。

此外,建议你参看一些C语言的变量有效范围的资料。