专家请答?

kek 2000-08-21 09:43:00
fsMDIChild窗口和fsMDIChild窗口的name分别是main,achild
fsmdichild窗口的类名是lchild
achild窗口上有两个控件:memo1,ProgressBar1(进度条)
main窗口上有两个button
achild的原代码:
...
private
{ Private declarations }
public
procedure run1;
procedure open(const Name: string);
{ Public declarations }
end;
...
procedure Tachild.open(const Name: string);
begin
Caption := ExtractFileName(Name);
memo1.Lines.LoadFromFile(Name);
end;

procedure Tachild.run1;
var i:integer;
begin
for i:=0 to 100 do
ProgressBar1.Position:=i;
end;
main的原代码:
.....
procedure Tmain.button1Click(Sender: TObject);
begin
if opd1.Execute then //opd1是打开对话框
with Tlchild.Create(Self) do
open(opd1.FileName); //这过程调用完全正常
end;

procedure Tmain.button2Click(Sender: TObject);
begin
achild.run1; //就是这过程调用不正常,不知问题出在哪?好象是用类名找不到
end;
...全文
234 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seoul 2000-08-26
  • 打赏
  • 举报
回复
你应该认真参考一下我的意见,因为我已在自己机器上重
演了你的错误。
meijg 2000-08-26
  • 打赏
  • 举报
回复
achild实在那里创建的?在第二个click事件中,没有创建
建议你把achild.run1这句放到第一个click事件中看看
Seoul 2000-08-26
  • 打赏
  • 举报
回复
我在我机器上已经演示了你的情况,也再现同样的错误,你应该参考我的意见,可你没
有,还在重复以前错误,你应该照我的回答做。
Seoul 2000-08-26
  • 打赏
  • 举报
回复
我已经说过了,但是你没有照做,太令人失望了,我又在本机重新演示了一遍你出现的错误。你应该认真参考一下我的意见。
kek 2000-08-24
  • 打赏
  • 举报
回复
问题还是不能解决,错误信息为:
Project dome.exe raised exceptione class EaccessViolation with message 'Access violation at address 00484D80 in module 'dome.exe'.Read of address FFFFFFFF'.Process stopped.Use step or Run to continue.

我说的是achild.run1; 这部分错
Wingsun 2000-08-21
  • 打赏
  • 举报
回复
procedure Tmain.button1Click(Sender: TObject);
begin
if opd1.Execute then //opd1是打开对话框
with Tlchild.Create(Self) do//此处仅仅是创建了TlChild类型的一个对象,但是不代表achild也被创建了。当然后面的代码就可能有问题啊
open(opd1.FileName); //这过程调用完全正常
end;

procedure Tmain.button2Click(Sender: TObject);
begin
achild.run1; //就是这过程调用不正常,不知问题出在哪?好象是用类名找不到
end;
Wingsun 2000-08-21
  • 打赏
  • 举报
回复
能描述一下错误信息吗?
alin 2000-08-21
  • 打赏
  • 举报
回复
procedure Tmain.button1Click(Sender: TObject);
begin
if opd1.Execute then //opd1是打开对话框
Begin
achild :=Tlchild.Create(Self);
achild.open(opd1.FileName); //这过程调用完全正常
end;
end;

procedure Tmain.button2Click(Sender: TObject);
begin
achild.run1; //就是这过程调用不正常,不知问题出在哪?好象是用类名找不到
end;
alin 2000-08-21
  • 打赏
  • 举报
回复
procedure Tmain.button1Click(Sender: TObject);
begin
if opd1.Execute then //opd1是打开对话框
achild :=Tlchild.Create(Self);
achild.open(opd1.FileName); //这过程调用完全正常
end;

procedure Tmain.button2Click(Sender: TObject);
begin
achild.run1; //就是这过程调用不正常,不知问题出在哪?好象是用类名找不到
end;
Wingsun 2000-08-21
  • 打赏
  • 举报
回复
改啊
procedure Tmain.button1Click(Sender: TObject);
begin
if opd1.Execute then //opd1是打开对话框
achild:=Tlchild.Create(Self);
with achild do
open(opd1.FileName);
end;

procedure Tmain.button2Click(Sender: TObject);
begin
achild.run1; //就是这过程调用不正常,不知问题出在哪?好象是用类名找不到
end;
Seoul 2000-08-21
  • 打赏
  • 举报
回复
if opd1.Execute then //opd1是打开对话框
with Tlchild.Create(Self) do//此处仅仅是创建了TlChild类型的一个对象,但是不代表achild也被创建了。当然后面的代码就可能有问题啊
open(opd1.FileName); //这过程调用完全正常
end;

改成
if opd1.Execute then //opd1是打开对话框
begin
achild:=Tlchild.Create(Self)
with achild do
open(opd1.FileName); //这过程调用完全正常
end;
end;

就行了,你是未将TLCHILD窗体创建的实例保存到一个窗体变量中,而在
ACHILD.RUN1
时其实ACHILD是一空值.
属于非法调用.
kek 2000-08-21
  • 打赏
  • 举报
回复
那我该怎么办啊????????

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧