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

cctvsoft 2006-10-20 12:05:47
我用C#做的一个软件,打完包安装后,当单击输出报表的按钮时,出现下面的提示:
“尝试读取或写入受保护的内存,这通常指示其他内存已损坏 ”
但是,我在开发环境中运行却没有问题,并且有的电脑有这问题,有的电脑没有问题。
那个提示,是我在操作Excel的一个类中捕获到的,各位大侠帮忙啊!
那个类的代码如下:
...全文
411 6 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
这种错误不好说..
RAR 是一个让你在命令行模式中管理压缩文件的控制台应用。RAR 提供压缩、加 密、数据恢复和许多其它此手册中描述的其它功能。 RAR 只支持 RAR 格式压缩文件,它默认有 .rar 扩展名。不支持ZIP 和其他格 式。即使创建压缩文件时指定了 .zip 扩展名,它仍然是 RAR 格式的。Windows 用户 可以 WinRAR,它支持更多的压缩文件类型,包括 RAR 和 ZIP 格式。 WinRAR 提供了图形用户界面和命令行模式。虽然控制台 RAR 和图形界面 WinRAR 有相似的命令行语法,但是它们还有有一些不同。所以推荐使用此 rar.txt 手册用于 控制台 RAR(rar.exe 在 Windows 版本的情况下),winrar.chm 是图形界面 WinRAR (winrar.exe) 的帮助文件。 配置文件 ~~~~~~~~ Unix 版本的 RAR 从用户的 home 或 /etc 目录中的 .rarrc 文件读取配置文件信息 (存储在 HOME 环境变量中) Windows 的版本 RAR 从 rar.ini 文件读取配置文件信息,它放在 rar.exe 文件相 同的目录中。 这个文件包含下列字符串: switches=任何 RAR 开关,用空格分开 例如: switches=-m5 -s 环境变量 ~~~~~~~~ 可以通过建立"RAR"环境变量来添加默认参数到命令行中. 例如,在 Unix 中,下列命令行可以被添加到你的配置中: RAR='-s -md1024' export RAR RAR 将使用这个字符串作为命令行的默认参数,并将使用 1024KB 字典大小来创建 “固实”压缩文件。 RAR 控制选项使用下列优先级: 命名行开关 最高优先级 在 RAR 变量中的开关 低优先级 保存在配置文件中的开关 最低优先级 日志文件 ~~~~~~~~ 如果在命令行或配置文件中指定开关 -ilog ,RAR 将会把处理压缩文件中遇到的错误 等写到日志文件中。读取开关 -ilog 描述获得更多信息。 固实压缩的文件列表 - rarfiles.lst ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ rarfiles.lst 包含一个用户定义的文件列表,告诉 RAR 添加文件到固实压缩文件时的顺 序。它可以包含文件名通配符和指定项目 -$default。默认项目定义了这个文件中与 其他项目不相符时的顺序清单位置。 注释字符是 ';'. 在 Windows 中,这个文件应该放在 RAR 所在的或 %APPDATA%\WinRAR 目录中, 在 Unix 中- 放在用户的 home 目录或在 /etc 中。 提高压缩率和操作速度的提示: - 在压缩文件中,小文件应该被组织在一起; - 频繁被处理的文件应该放在开始的位置。 普通的掩码越靠近顶端优先权就越高,但是这个规则存在例外。如果 rarfiles.lst 包含两个掩码,并且所有文件既匹配第一个掩码,也匹配第二个掩码, 较小的子集 或者更精确的匹配拥有更高的优先权。例如,如果你用 *.cpp 和 f*.cpp 掩码, f*.cpp 拥有更高的优先权。 RAR 命令行语法 ~~~~~~~~~~~~~~ 语法 RAR [ - ] [ ] [ ] [ ] 描述 命令行选项 (命令和开关) 提供了使用 RAR 创建和管理压缩文件的控制方法。命 令是一个字符串(或单个的字母),命令 RAR 去执行一个相应的操作。开关被用来 改变 RAR 执行操作的方法。其它参数是压缩文件名和被压缩的文件或要从压缩文件 中被解压文件。 列表文件是一个包括处理的文件名的纯文本文件。第一列应该以文件名开始。可以 在//字符后添加注释。例如,你可以创建包含下列字符串的 backup.lst: c:\work\doc\*.txt //备份文本文档 c:\work\image\*.bmp //备份图片 c:\
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表中添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表中已有的条目。   bootcfg /disableredirect 在启动引导程序中禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序中通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同时使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同时使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot

110,499

社区成员

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

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

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