在form1里面有1个数组a[0..30].一个procedure pA,,pA里面要用刀数组a
form1.showmodal后,按form1的按钮执行form2.showmodal,而form2需要调用form1的pA,但是跟踪的时侯发现form2调用pA的时侯,A全为为nil,但是form1内部自己调用则为正常数据.....请问,怎么回事,该怎么办?(全局变量除外)
form1.showmodal后,按form1的按钮执行form2.showmodal,而form2需要调用form1的pA,但是跟踪的时侯发现form2调用pA的时侯,A全为为nil,但是form1内部自己调用则为正常数据.....请问,怎么回事,该怎么办?(全局变量除外)
解决方案 »
- Delphi 服务自动退出
- Delphi程序运行时这种错误是怎么回事呀?
- 兄弟们,出个主意吧!
- 刚申请的Blog,欢迎光临指导(进者有分)
- D7可以实现这个吗?
- ADO+ActiveForm存取BLOB型数据,在线等待。
- delphi计算excel两个时间格式单元格的差值
- 高级问题关于窗口进程!
- 我从来没有学过delphi,但今天,我决定了一件事情,我要用delphi编写一套工资管理系统,也就是说,将来会有好多好多的问题来问大家啊,哈哈哈哈,先扰一下了,第一个问题,用delphi做工资管理系统最难的环节是那一节?
- 怎么去检测A:盘是否存在(可以打开)?
- 求助:怎么一个数组的值放到一个字符串来,谢谢!
- 转贴分享:delphi字符串函数
你用 Owner 传的???
只能写个例子给你,不知道与你的情况是否一致:Form1的代码:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
public
A : array [0..30] of Pointer;
procedure pA;
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.pA();
var
s : String;
i : Integer;
begin
s := '';
for i := Low(A) to High(A) do
if A[i] <> nil then s := s + Format('%d', [DWORD(A[i])]) + ' , ';
ShowMessage (s);
end;procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
begin
for i := Low(A) to High(A) do A[i] := @i;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;end.
Form2的代码:
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;var
Form2: TForm2;implementationuses Unit1;{$R *.dfm}procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.pA;
end;end.
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
a: array[0..30] of integer;
public
procedure pa();
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
a[30] := 100;
end;procedure TForm1.pa;
begin
ShowMessage(IntToStr(a[30]));
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(self);
Form2.ShowModal;
FreeAndNil(Form2);
end;end.-----------------------------------------------
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}
uses unit1;procedure TForm2.Button1Click(Sender: TObject);
begin
TForm1(Owner).pa;
end;end.