var
FormSelectPrintItem: TFormSelectPrintItem;
Kind:String;
StrType1,StrTypeDB2:TStringList;//应该算是全局变量吧?
implementation{$R *.dfm}function ShowFormSelectPrintItem(Dataset:TDataset;Kind:String;StrType:TStringList;StrTypeDB:TStringList): Boolean ;
var
test:String;
begin
//SelectPrintItem_Frm.StrType1:=TStringList.Create;
SelectPrintItem_Frm.StrTypeDB2:=TStringList.Create;
SelectPrintItem_Frm.StrType1:=StrType;
test:=SelectPrintItem_Frm.StrType1.text;//没创建SelectPrintItem_Frm.StrType1,用SelectPrintItem_Frm.StrType1.text居然能够运行,不出现异常,不太明白???
FormSelectPrintItem: TFormSelectPrintItem;
Kind:String;
StrType1,StrTypeDB2:TStringList;//应该算是全局变量吧?
implementation{$R *.dfm}function ShowFormSelectPrintItem(Dataset:TDataset;Kind:String;StrType:TStringList;StrTypeDB:TStringList): Boolean ;
var
test:String;
begin
//SelectPrintItem_Frm.StrType1:=TStringList.Create;
SelectPrintItem_Frm.StrTypeDB2:=TStringList.Create;
SelectPrintItem_Frm.StrType1:=StrType;
test:=SelectPrintItem_Frm.StrType1.text;//没创建SelectPrintItem_Frm.StrType1,用SelectPrintItem_Frm.StrType1.text居然能够运行,不出现异常,不太明白???
Kind:String;//在全局变量区
调用时
SelectPrintItem_Frm.Kind:=Kind;应该可以直接这样吧?但是SelectPrintItem_Frm.Kind我也没有create阿,怎么可以用?难道他属于基本类型?
FormSelectPrintItem: TFormSelectPrintItem;
Kind:String;
StrType1,StrTypeDB2:TStringList;//应该算是全局变量吧?
我感觉直接用
StrTypeDB2 := ...
StrType1 := ...
就可了,与 SelectPrintItem_Frm 无关
test:=SelectPrintItem_Frm.StrType1.text;//test实际上是等于StrType.Text很正常嘛,本来就没有问题。
var
FormSelectPrintItem: TFormSelectPrintItem;
Kind:String;
StrType1,StrTypeDB2:TStringList;//应该算是全局变量吧?
implementation{$R *.dfm}
StrTypeDB2是变量没有被创建就可以使用?
SelectPrintItem_Frm.StrType1:=StrType;
test:=SelectPrintItem_Frm.StrType1.text;//?????????
怎么说TStringList类型的变量不用创建就可以使用?不是很明白!?
http://lysoft.7u7.net
中看看,应该你的 FormSelectPrintItem 已经是自动创建的了,所以...
SelectPrintItem_Frm.StrType1 := StrType;
这一句给全局变量StrType1赋值了,把形参StrType赋给它了。而它们是TStringList类的实例,可以理解成就是赋了地址。这时全局变量StrType1也就是你调用此函数时传过来的StrType。你在调用时如果创建过了,那当然就有了。
这句表明
SelectPrintItem_Frm.StrType1和StrType指向堆的同一个位置,也就是说两个对象引用的是同一个对象,所以不用创建也能用咯