本来在互相USES后,直接写 Form2.Edit1.Text:=Form1.Edit1.Text就可以,我自己也实现了.
但现在是我在做的DLL中,一运行刚才那条就会出错????问题在哪里????注:我用的是DELPHI7.0,DLL编译时未出错.....

解决方案 »

  1.   

    其中的两个Form都有实例吗?
    if (Assigned(Form2) and Assigned(Form1)) then
      Form2.Edit1.Text:=Form1.Edit1.Text;
      

  2.   

    刚测试了一下,在FORM2中,只要调用FORM1中的数据,就会出错
      

  3.   

    Text是TCaption类型,好象是string的类型重定义:
    type TCaption = type string;
    DLL中一般不能用string
      

  4.   

    但我为什么我用FORM1中的变量也同样报错?
      

  5.   

    Form2.Edit1.Text:=Form1.Edit1.Text这样的操作本身就是不合理的。你的两个窗口都在DLL中吗?还是一个在另一个不在。---------------------------
    最好的办法是给FORM1 添加一个
    published
    propertyext:String Read Geted_Text Write Seted_Text;
    两个窗体都创建了吗?
      

  6.   

    DLL库中的Form1,Form2都没有被创建其本身是存在的,如果你向使用他们请先
    Form1:=TForm1.Create(nil);
    form2:=Tform2.Create(nil):
    还有就是用完后释放他们
      

  7.   

    错误内容???
    我想是Sting 的原因:你在工程文件中加入sharemem单元应该可以了。
      

  8.   

    Access Violation At Address 02105b8c In module "Test.Dll". Read of Address 000003fc大家帮帮我吧!!以显示我佛大无畏的精神啊!!!!!
      

  9.   

    如果按照默认的话,应该是两个窗口都会被自己初始化,两个单元间是不应该被相互uses的,楼上的方法可以,如果一定要循环引用的话,就必须把一个uses子句移到implementation部分,而把别一个留在interface部分.
      

  10.   

    本来就是这样子的啊,一个在USES单元中,一个在IMPLEMENTATION中的USES中,还有,无论是全局变量,还是私有变量,一引用就出错.再次强调,编译的时候没有报半点错误.
      

  11.   

    还有,相同的代码我在APPLICATION中试过,正常,为什么在DLL中会出这样的错误?