尝试读取或写入受保护的内存,这通常指示其他内存已损坏

cctvsoft 2006-10-20 12:05:47
我用C#做的一个软件,打完包安装后,当单击输出报表的按钮时,出现下面的提示:
“尝试读取或写入受保护的内存,这通常指示其他内存已损坏 ”
但是,我在开发环境中运行却没有问题,并且有的电脑有这问题,有的电脑没有问题。
那个提示,是我在操作Excel的一个类中捕获到的,各位大侠帮忙啊!
那个类的代码如下:
...全文
415 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cctvsoft 2006-10-23
  • 打赏
  • 举报
回复
这个问题我自己已经解决了,是我引用的Excel版本的问题。
csrwgs 2006-10-21
  • 打赏
  • 举报
回复
把程序需要的资源都放在程序所在目录下面

不要调用%System%下面的。

因为有的机子没装
Nara 2006-10-21
  • 打赏
  • 举报
回复
F10...
owennol 2006-10-20
  • 打赏
  • 举报
回复
这种错误一般是数组越界之类
cctvsoft 2006-10-20
  • 打赏
  • 举报
回复
class Reports
{
/****************************************************字段***************************************************/
private string m_strExcelParch; //Excel模板文件的存放路径
private string m_strExcelName; //Excel模板文件的名称

private string m_strHeaders; //输出报表的表头名称

private string m_strBillID; //单据的ID
private string m_strDate; //字符串型日期
private string m_strExcelTitle; //输出报表的标题

private static int m_intFlag = 0; //为了不出现重复的Excel文件名,当次打开软件的标题=标题+m_intFlag由0开始美打开一个增加1

public static string m_strExeParch; //Exe文件的存放目录


private DateTime m_DT; //日期型日期

private Excel.Application m_xslApplication;//一个Excel文件对象
private System.Data.DataTable m_dtReport; //要填充Excel文件的数据表


/****************************************************构造函数or方法**********************************************************/
/// <summary>
/// 初始化一个报表信息
/// </summary>
/// <param name="p_strExcelName">Excel模板文件的名称</param>
/// <param name="p_dtReport">要填充Excel文件的数据表</param>
/// <param name="p_strHeaders">输出报表的表头名称</param>
/// <param name="p_strBillID">单据的ID</param>
/// <param name="p_dtTime">日期</param>
public Reports(string p_strExcelName,System.Data.DataTable p_dtReport,string p_strHeaders,string p_strBillID,DateTime p_dtTime)
{
m_dtReport = p_dtReport;
m_strExcelName = p_strExcelName.Trim();
m_strHeaders = p_strHeaders.Trim();
m_strBillID = p_strBillID.Trim();
m_strDate = p_dtTime.Date.ToShortDateString();


m_strExcelParch = System.Environment.CurrentDirectory + @"\Reports\" + m_strExcelName + ".xlt";

if (Directory.Exists(m_strExeParch + @"\wStarSReport") == false)
{
Directory.CreateDirectory(m_strExeParch + @"\wStarSReport");
}

FileInfo fifMode = new FileInfo(m_strExcelParch);
m_strExcelTitle = m_strHeaders + m_intFlag++;
fifMode.CopyTo(m_strExeParch + @"\wStarSReport\" + m_strExcelTitle + ".xls",false);


Thread thread1 = new Thread(new ThreadStart(toExcel));
thread1.Start();
}

/// <summary>
/// 初始化一个报表信息,重载
/// </summary>
/// <param name="p_strExcelName">Excel模板文件的名称</param>
/// <param name="p_dtReport">要填充Excel文件的数据表</param>
/// <param name="p_strHeader">输出报表的表头名称</param>
/// <param name="p_dTime">日期</param>
public Reports(string p_strExcelName, System.Data.DataTable p_dtReport, string p_strHeader, DateTime p_dTime)
{

m_dtReport = p_dtReport;
m_strExcelName = p_strExcelName.Trim();
m_strHeaders = p_strHeader.Trim();
m_DT = p_dTime;


m_strExcelParch = System.Environment.CurrentDirectory + @"\Reports\" + m_strExcelName + ".xlt";
m_strExeParch = System.IO.Directory.GetCurrentDirectory();

if (Directory.Exists(m_strExeParch + @"\wStarSReport") == false)
{
Directory.CreateDirectory(m_strExeParch + @"\wStarSReport");
}

FileInfo fifMode = new FileInfo(m_strExcelParch);
m_strExcelTitle = m_strHeaders + m_intFlag++;
fifMode.CopyTo(m_strExeParch + @"\wStarSReport\" + m_strExcelTitle + ".xls", true);


Thread thread1 = new Thread(new ThreadStart(toExcel));
thread1.Start();
}

股神 2006-10-20
  • 打赏
  • 举报
回复
这种错误不好说..

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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