關閉新建圖片時發生EAccessViolation異常 (100分)

  • 主题发起人 主题发起人 CathyZhou
  • 开始时间 开始时间
C

CathyZhou

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做一個繪圖小程序,每當試圖關閉新建的圖片時就會發生EAccessViolation異常,具體錯誤信息如下:
1、Access violation at address 00000060.Read of address 00000060.
2、Exception EAccessViolation in module xxx.exe at 00292347.Access violation at address 00292347.Write of address 019A1970.
請問是什麽原因引起的?
 
我想只能告诉你你的程序有问题,至于是什么问嘛,喝喝,只能问你的程序了.

非法内存访问或者...
 
代碼如下:
——————————————————————
新建圖片代碼:
with main do
begin
New.Bitmap:=nil;
try
New.Bitmap:=TBitmap.Create;
New.Bitmap.Width:=StrToInt(WidthEdit.Text);
New.Bitmap.Height:=StrToInt(HeightEdit.Text);
SaveStyles;
Image.Picture.Graphic:=New.Bitmap;
RestoreStyles;
CurrentFile:=EmptyStr;
finally
New.Bitmap.Free;
end;
Save.Enabled:=True;
SaveAs.Enabled:=True;
Close.Enabled:=True;
Cut.Enabled:=True;
Copy.Enabled:=True;
Paste.Enabled:=True;
tbSave.Enabled:=True;
tbCut.Enabled:=True;
tbCopy.Enabled:=True;
tbPaste.Enabled:=True;
end;

關閉圖片代碼:
var
ret:integer;
begin
if New.Bitmap<>nil then
begin
ret:=Application.MessageBox('是否保存對圖片所做的修改?','SpeedGraph',mb_iconquestion+mb_YesNoCancel+mb_DefButton1);
case ret of
2:{Cancel}System.Exit;
6:{Yes}
begin
p_close:=True;
Save.Click;
end;
7:{No}
begin
Image.Picture.Graphic:=nil;
Save.Enabled:=False;
SaveAs.Enabled:=False;
Cut.Enabled:=False;
Copy.Enabled:=False;
Paste.Enabled:=False;
tbSave.Enabled:=False;
tbCut.Enabled:=False;
tbCopy.Enabled:=False;
tbPaste.Enabled:=False;
Close.Enabled:=False;
end;
end;
end;
end;
 
看不出什么问题来;

1:New是什么东东?
2:SaveStyles和RestoreStyles做了什么?
3:Save.Click做了什么?
4:用Image.Picture:=nil;代替Image.Picture.Graphic:=nil;
5:用Image.Picture.assign(New.Bitmap);代替Image.Picture.Graphic:=New.Bitmap;
 
请问一下,关闭时,选择2,6,7 都会产生这个错误吗?
 
新建圖片代碼:
with main do
begin
New.Bitmap:=nil;
try
New.Bitmap:=TBitmap.Create;
New.Bitmap.Width:=StrToInt(WidthEdit.Text);
New.Bitmap.Height:=StrToInt(HeightEdit.Text);
SaveStyles;
Image.Picture.Graphic:=New.Bitmap;  ===>换成Image.Picture.Graphic.Assign(New.Bitmap);
RestoreStyles;
CurrentFile:=EmptyStr;
finally
New.Bitmap.Free;
New.Bitmap := nil; <===== 加上此句
end;
Save.Enabled:=True;
SaveAs.Enabled:=True;
Close.Enabled:=True;
Cut.Enabled:=True;
Copy.Enabled:=True;
Paste.Enabled:=True;
tbSave.Enabled:=True;
tbCut.Enabled:=True;
tbCopy.Enabled:=True;
tbPaste.Enabled:=True;
end;

關閉圖片代碼:
var
ret:integer;
begin
if New.Bitmap<>nil then <===== 怀疑应为 if Image.Picture.Graphic<>nil then
begin
ret:=Application.MessageBox('是否保存對圖片所做的修改?','SpeedGraph',mb_iconquestion+mb_YesNoCancel+mb_DefButton1);
case ret of
2:{Cancel}System.Exit;
6:{Yes}
begin
p_close:=True;
Save.Click;
end;
7:{No}
begin
Image.Picture.Graphic.Free; <======加上此句
Image.Picture.Graphic:=nil;
Save.Enabled:=False;
SaveAs.Enabled:=False;
Cut.Enabled:=False;
Copy.Enabled:=False;
Paste.Enabled:=False;
tbSave.Enabled:=False;
tbCut.Enabled:=False;
tbCopy.Enabled:=False;
tbPaste.Enabled:=False;
Close.Enabled:=False;
end;
end;
end;
end;

 
来自:DouZheng, 时间:2003-9-28 0:02:00, ID:2204933
请问一下,关闭时,选择2,6,7 都会产生这个错误吗?
——————
只要是新建的圖片都會有此問題,但打開的圖片就沒有任何問題。當然,2(Cancel)不會~
 
To DouZheng:
按照你的指示修改後,單只關閉圖片已不會出錯,但退出整個程序時,還會出現如下錯誤:
————————————————————
Access violation at address 00000000.Read of address 00000000.
————————————————————
 
多人接受答案了。
 
后退
顶部