使用rgbConverted.cpp失败调试断言

时间:2015-04-25 11:52:49

标签: c++-cli

首先说,这是一个重复的问题,但不是同一个问题 当我运行我的代码时,显示此消息,但没有错误。

Error

#pragma once
using namespace System::Drawing;

ref class rgbConvert
{
private: 
    System::Drawing::Bitmap^ grayImage;
    System::Drawing::Bitmap^ bainaryImage;
    System::Drawing::Bitmap^ rgbImage;
    int xsize;
    int ysize;
    bool **BArray;
    int **GrayArray;
    int **binary;
    FILE *fp;

static float coef01 = (float)0.2989;
static float coef02 = (float)0.5870;
static float coef03 = (float)0.1140;

public:

rgbConvert(System::Drawing::Bitmap^ im)
{
    rgbImage = im;
    xsize = rgbImage->Height;
    ysize = rgbImage->Width;
}

rgbConvert(int height, int width)
{
    xsize = height;
    ysize = width;
}

int** getGrayImageArray ()
{
    GrayArray = new int * [xsize];
    for (int i = 0; i < xsize; i++ )
    {
        GrayArray[i] = new int[ysize];
    }

    for( int i = 0; i < this->xsize; i++ )
    {
        for ( int j = 0; j < this->ysize; j++ )
        {
            System::Drawing::Color^ clr = this->rgbImage->GetPixel(j, i);
            int pixel = clr->ToArgb();              

            //int alpha = (pixel >> 24) & 0xff;// no need here
            int red = (pixel >> 16) & 0xff;
            int green = (pixel >>  8) & 0xff;
            int blue = (pixel      ) & 0xff;

            int grayC = int(coef01*red + coef02*green + coef03*blue);

            GrayArray[i][j] = grayC;
        }// inner for*/
    }

    return GrayArray;
}

void getGrayImageArray (int** gArray)
{
    this->GrayArray = gArray;
}

bool** GetBinaryArray( int level )
{
    BArray = new bool * [xsize];
    for (int i = 0; i < xsize; i++ )
    {
        BArray[i] = new bool[ysize];
    }

    binary = new int * [xsize];
    for (int i = 0; i < xsize; i++ )
    {
        binary[i] = new int[ysize];
    }
    fp=fopen("C:\\binary.txt","w");

    int grayC;

    for ( int xVal = 0; xVal < xsize; xVal++ )
    {
        for( int yVal = 0; yVal < ysize; yVal++ )
        {
            grayC = GrayArray[xVal][yVal];

            if ( grayC >= level )
            {
                BArray[xVal][yVal] = true;
                binary[xVal][yVal] = 1;
                fprintf(fp,"%d",binary[xVal][yVal]);
            }
            else
            {
                BArray[xVal][yVal] = false;
                binary[xVal][yVal] = 0;
                fprintf(fp,"%d",binary[xVal][yVal]);
            }

        }// inner for*/
    }
    fclose(fp);
    return BArray;
}
};

当我按下重试时,断点显示此行。

fprintf(fp,"%d",binary[xVal][yVal]);

如果我删除这些行,然后在主程序中显示断点。

int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 

    // Create the main window and run it
    Application::Run(gcnew Form1());
    return 0;
}

断点显示在return 0这一行。

1 个答案:

答案 0 :(得分:0)

实际上这是一个众所周知的问题。我已经解决了这个话题。在我的代码中,我在C盘中创建了文本文件,docx文件和图像。但是没有权限访问我的计算机中的C盘。 然后我按照以下步骤解决了问题:

  1. 如果您可以访问cmd,则可以重置安全设置     Vista / Windows 7使用以下命令:“secedit / configure / cfg     %windir%\ inf \ defltbase.inf / db defltbase.sdb / verbose“(没有引号。)     要查看此命令的作用,请转到此处:如何恢复安全性     设置为默认设置?

    注意:如果您在登录时无法访问cmd,请使用本指南 系统恢复选项。你可以到达命令行 访问“系统恢复选项”屏幕。

  2. 这个命令似乎给了所有权问题 背面,即使它似乎没有任何改变。去资源管理器, 右键单击C:并转到“属性”。

  3. 转到“安全”选项卡,然后转到“高级”。

  4. 转到“所有者”标签。现在您应该可以单击“编辑”。

  5. 如果您所在的列表中没有管理员 “将所有者更改为:”然后转到“其他用户或群组”。如果你这样做,去吧 直接进入第7步。

  6. 在其他用户或群组中输入“管理员”(无引号) 底盒。单击“检查名称”,然后单击“确定”。

  7. 单击“管理员”,然后单击“确定”。你现在给自己了 C的所有权:! (只要您的帐户是管理员,那就是 是)。

  8. 在“高级安全设置...”窗口中单击“确定”以返回 到属性窗口。你现在应该有一个列表 权限等等你之前只有一些关于如何做的事情 你无法查看权限。进展,嗯?

  9. 您可能需要添加Adminstrators组来编辑它们 权限。为此,请单击“编辑”,然后单击“添加”并键入 底部框中的“管理员”(无引号)。然后点击Check Name 然后确定。

  10. 单击列表中的“管理员”,然后勾选“允许”框 “完全控制”旁边的列。

  11. 点击“应用”,您可能会收到大量有关如何的错误消息 这不能应用于某些文件和文件夹。好的通过 商场。完成后,您应该可以访问C:驱动器一次 更!

  12. Source Link