编译好的程序,怎么偶尔有"access violation"错误,请指教(100分)

  • 主题发起人 主题发起人 logcom
  • 开始时间 开始时间
L

logcom

Unregistered / Unconfirmed
GUEST, unregistred user!
这种问题偶尔才出现,有时候重起机器就可以了。又是按确定后 就可以照常运行了。
百思不解,请教大侠们了
 
你程序有什么异常而且你没有做异常处理
所以弹出DELPHI的异常提示
 
非法内存访问的问题。
如你定义了一个字符串string
其后通过变量访问其i处内容string,而此时如果i=0那么就会出现
access violation的问题。
 
也可能是你在对象创建之前调用了它。
 
最可能的原因如下:
str1:pChar;

str1:='aaa';

没有使用GetMem(str1,255); FreeMem(str1)建立和释放Str1的空间,所以有时会出莫名其妙的错误。
记得当初刚刚学习Delphi的时候也是这个样子。[:D][:D]
 
這種問題還是跟蹤一下,沒頭沒腦怎麼回答?
 
比较典型的内存错误,通常是由于写的未分配的内存。程序肯定有问题,但并不是每次运行
都会出错。建议检查每一个指针的使用。
 
这段代码会不会有错误?我只有这里用了指针了
procedure TMainForm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
s,str:string;
i:integer;
begin
SetLength(S, BufferLength); //接收RS232的数据并显示Memo1上。
Move(Buffer^, PChar(S)^, BufferLength);
if (copy(s,1,1)='P') and (length(s)<19) and (length(s)>14) then
showdata(s)
else
begin
str:='F1;'; //发送远程控制
comm1.WriteCommData(pchar(str),length(str));
end;
end;
 
不太清楚,没有试。不过我想是不是将s声明为pchar然后自已分配内存会好一点?
good luck!
 
是DELPHI6把

我这里也是...别去理他
 
搞定了
单步跟踪出来了
明天给分
 
有我的分么?
 
多人接受答案了。
 
后退
顶部