c++builder编写的可执行程序一运行就出现Access violation

编写的绘图程序,一运行就出现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了

你测试一下