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居然能够运行,不出现异常,不太明白???

解决方案 »

  1.   

    还有个问题:  
    Kind:String;//在全局变量区
    调用时
    SelectPrintItem_Frm.Kind:=Kind;应该可以直接这样吧?但是SelectPrintItem_Frm.Kind我也没有create阿,怎么可以用?难道他属于基本类型?
      

  2.   

    var
      FormSelectPrintItem: TFormSelectPrintItem;
      Kind:String;
      StrType1,StrTypeDB2:TStringList;//应该算是全局变量吧?
    我感觉直接用 
     StrTypeDB2 := ...
      StrType1 := ...
    就可了,与 SelectPrintItem_Frm 无关
      

  3.   

    SelectPrintItem_Frm.StrType1:=StrType;//SelectPrintItem_Frm.StrType1指向StrType实例
    test:=SelectPrintItem_Frm.StrType1.text;//test实际上是等于StrType.Text很正常嘛,本来就没有问题。
      

  4.   

    我那几个不是类的成员变量,是全局变量。
    var
      FormSelectPrintItem: TFormSelectPrintItem;
      Kind:String;
      StrType1,StrTypeDB2:TStringList;//应该算是全局变量吧?
    implementation{$R *.dfm}
    StrTypeDB2是变量没有被创建就可以使用?
    SelectPrintItem_Frm.StrType1:=StrType;
    test:=SelectPrintItem_Frm.StrType1.text;//?????????
    怎么说TStringList类型的变量不用创建就可以使用?不是很明白!?
      

  5.   

    晕~~SelectPrintItem_Frm.StrType1:=StrType 都已经改变了SelectPrintItem_Frm.StrType1了StrType1.text就是StrType.text,当然能用_____________________
    http://lysoft.7u7.net
      

  6.   

    oh, 我应该明白你要问的了,在 delphi 的菜单 Project - Options - Forms
    中看看,应该你的  FormSelectPrintItem 已经是自动创建的了,所以...
      

  7.   

    StrType1当然算是全局变量,还有你这个单元(Unit)的名称应该是叫SelectPrintItem_Frm吧,这样SelectPrintItem_Frm.StrType1也就相当于StrType1,前面可以省略掉
    SelectPrintItem_Frm.StrType1 := StrType;
    这一句给全局变量StrType1赋值了,把形参StrType赋给它了。而它们是TStringList类的实例,可以理解成就是赋了地址。这时全局变量StrType1也就是你调用此函数时传过来的StrType。你在调用时如果创建过了,那当然就有了。
      

  8.   

    SelectPrintItem_Frm.StrType1:=StrType;
    这句表明
    SelectPrintItem_Frm.StrType1和StrType指向堆的同一个位置,也就是说两个对象引用的是同一个对象,所以不用创建也能用咯