指针问题紧急高分求救啊!!!

hzhxxx 2003-10-20 10:38:08
我写了一个程序,其中一个模块只要一运行完(我跟踪过),就会报出

"Invalid pointer operation" 非法指针操作的任务,然后程序就死掉了!!!!

不知道该怎么调试以及修改.

希望哪位大哥赐教!!!!
...全文
39 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
longmei 2003-10-20
  • 打赏
  • 举报
回复
for (int i=0; i<iCount; i++)
delete Chart2->Series[0];

这里你就写的不对,应该是Series[i];
下面的我就没继续看~ 呵呵
hzhxxx 2003-10-20
  • 打赏
  • 举报
回复
if(m_grahtype == 0)
{
iCount = Chart1->SeriesList->Count;

for (int i=0; i<iCount; i++)
delete Chart1->Series[0];

for (unsigned int i=0; i<m_Yaxis.size(); i++)
{
unsigned int pos = 0;
TBarSeries* seriesBar = new TBarSeries(Chart1);
for (unsigned int j = 0;j<result.size();j++)
{
if (result[j].SeriName == m_Yaxis[i].Name)
{
seriesBar->AddY(result[j].Sum,result[j].SeriName,clTeeColor);
seriesBar->XLabel[pos] = result[j].CateName;
pos++;
}
}
seriesBar->Title = m_Ycnaxis[i];
seriesBar->Marks->Style = (smsValue);
Chart1->AddSeries(seriesBar);
}
}

if(m_grahtype == 1)
{
if(result.size() > 1)
{
iCount = Chart2->SeriesList->Count;
for (int i=0; i<iCount; i++)
delete Chart2->Series[0];

for (unsigned int i=0; i<m_Yaxis.size(); i++)
{
unsigned int pos = 0;
TLineSeries* seriesLine = new TLineSeries(Chart2);
for (unsigned int j = 0;j<result.size();j++)
{
if (result[j].SeriName == m_Yaxis[i].Name)
{
seriesLine->AddY(result[j].Sum,result[j].SeriName,clTeeColor);
seriesLine->XLabel[pos] = result[j].CateName;
pos++;
}
}
seriesLine->Title = m_Ycnaxis[i];
seriesLine->Marks->Style = (smsValue);
Chart2->AddSeries(seriesLine);
}
}
}

if(m_grahtype == 2)
{
iCount = Chart3->SeriesList->Count ;

for (int i=0; i<iCount; i++)
delete Chart3->Series[0];

for (unsigned int i=0; i<m_Yaxis.size(); i++)
{
unsigned int pos = 0;
TPieSeries* seriesPie = new TPieSeries(Chart3);
for (unsigned int j = 0;j<result.size();j++)
{
if (result[j].SeriName==m_Yaxis[i].Name)
{
seriesPie->AddY(result[j].Sum,result[j].SeriName,clTeeColor);
seriesPie->XLabel[pos] = result[j].CateName;
pos++;
}
}
seriesPie->Title = m_Ycnaxis[i];
seriesPie->Marks->Style = (smsPercent);
Chart3->AddSeries(seriesPie);
}
}


这是一个用CB自带的TChart控件将数据集里的数据图形化显示的程序
另一段代码负责显示不同TChart类型图形的展示(总共有三种柱型图,线型图,饼图)代码如下:

void __fastcall TGraphForm::ComboBox1Change(TObject *Sender)
{
Notebook1->PageIndex = ComboBox1->ItemIndex;

SetSelectChartType(m_grahtype);

m_grahtype = ComboBox1->ItemIndex;

if(m_grahtype != GetSelectChartType())
{
ChangeChartTitleShow();
RefreshGraph();
}
}

m_grahtype是一个枚举类型,表示是用柱型图,线型图,饼图三个中的哪一个显示(0-柱图,1-线图,2-饼图)

Chart1 柱型图TChart
Chart2 线型图TChart
Chart3 饼图TChart

现在就是某些数据传进去要图形化时,选择柱型图,饼图都能正常显示,但是如果选择线型图
就会报出 "invalid pointer operation" 的错误,然后程序就死掉了.

其他的数据传进去线型图又不会报错.


lidelu 2003-10-20
  • 打赏
  • 举报
回复
对啊 你都不帖代码,人家怎么知道是怎么回事儿
sprewellkobe 2003-10-20
  • 打赏
  • 举报
回复
强烈要求看代码!
GodBirdFlying 2003-10-20
  • 打赏
  • 举报
回复

可否把使用指针德代码铁出来.
huangjuliang 2003-10-20
  • 打赏
  • 举报
回复
程序贴出来看看,不然怎么改呀?

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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