编写的绘图程序,一运行就出现Access violation at address 00429A16 in module"Project1.exe",Read of address 000002F0这个错误,我查了map文件,好像错误是一个无模式对话窗口Form4的TsearchRec这块有问题,这个子函数的功能是刷新Form4里的列表,请各位大神帮我看一下,是这段程序有问题吗
void __fastcall TForm4::RefreshListView(TObject * Sender) //所有功能码列表ListView1
{
//TODO: Add your source code here
Form4->ListView1->Clear(); //清空列表视图控件
AnsiString sPath = ""+generaldcspath+"/generaldcs/Draw Platform/save/*.*"; //获取路径名
// char *pnname=sPath.c_str();
TSearchRec sr; //查询结构体
if (FindFirst(sPath,faAnyFile,sr) == 0) //根据路径名查找所有文件
// if (FindFirst(pnname,faAnyFile,sr) == 0) //根据路径名查找所有文件
{ //如果有文件
if (sr.Name.AnsiPos("wee") != 0) //判断是否为wee文件
Form4->ListView1->AddItem(sr.Name,Sender); //若是wee文件就加入列表视图控件中
while(FindNext(sr) == 0) //查找下一个任意文件
{ //如果找到
if (sr.Name.AnsiPos("wee") != 0) //判断是否为wee文件
Form4->ListView1->AddItem(sr.Name,Sender); //若是wee文件就加入列表视图控件中
}
FindClose(sr); //停止查找
}
}
指针问题,以调试方式运行,看出错的行,然后检查指针。
你其中有一步代码获取的指针没有成功,造成后面访问的时候异常了。
指针无效了。你Debug下单步执行F10,应该很容易找到出错的地方。
楼主的AnsiString sPath = ""+generaldcspath+"/generaldcs/Draw Platform/save/*.*"; //获取路径名
这个有严重问题,要把/改为\
我想我找到你程序的问题了,你把所有的 Form4-> 这个去掉就OK了
你测试一下