Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:输出参数索引[i]对于组件而言过高或过低_C#_Parameters_Grasshopper - Fatal编程技术网

C#:输出参数索引[i]对于组件而言过高或过低

C#:输出参数索引[i]对于组件而言过高或过低,c#,parameters,grasshopper,C#,Parameters,Grasshopper,运行以下代码时出现以下错误消息: c#:对于组件,输出参数索引[1]过高或过低 IGH_DataAccess已经在“获取当前迭代计数”的帮助中提供了一个迭代计数。在解决方案期间,首次对组件调用SolveInstance()函数时,迭代计数器将为零。每次后续调用都会增加1。使用DA.SetData时(0,m_设置[0])它确实显示第一行 错误消息出现在使用的程序中,我在DA.SetData(I,m_设置[I])上得到以下异常: 发生系统异常 消息=未知文件 来源=蚱蜢 堆栈跟踪: 在C:\dev\

运行以下代码时出现以下错误消息:

c#:对于组件,输出参数索引[1]过高或过低

IGH_DataAccess
已经在“获取当前迭代计数”的帮助中提供了一个迭代计数。在解决方案期间,首次对组件调用
SolveInstance()
函数时,迭代计数器将为零。每次后续调用都会增加1。使用
DA.SetData时(0,m_设置[0])它确实显示第一行

错误消息出现在使用的程序中,我在
DA.SetData(I,m_设置[I])上得到以下异常

发生系统异常 消息=未知文件 来源=蚱蜢 堆栈跟踪: 在C:\dev\Grasshopper\1.0\root\src\GH\u GlobalProc.vb中的Grasshopper.Global\u Proc.ASSERT(Guid ASSERT\u id,字符串消息,异常异常):第98行 内部异常:

Herafter是对IGH_DataAccess.SetData方法的描述:
在GH_Component.SolveInstance()期间将数据存储在输出参数中。此功能仅用于设置单个数据项。如果要设置数据列表,则*必须*调用SetDataList()。

将代码更改为
DA.SetDataList时(i,m_设置[i])第一行的字符被拆分,而我希望每一行都被拆分

我做错了什么

string[] m_settings;

public void ShowSettingsGui()
{
    var dialog = new OpenFileDialog { 
                     Filter = "Data Sources (*.ini)|*.ini*|All Files|*.*" };
    if (dialog.ShowDialog() != DialogResult.OK) return;
    m_settings = File.ReadAllLines(dialog.FileName);
    ExpireSolution(true);
}

protected override void SolveInstance(IGH_DataAccess DA)
{
    if (m_settings == null)
    {
        AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, 
                          "You must declare some valid settings");
        return;
    }

    for (var i = 0; i < m_settings.Length; i++)
    {
        DA.SetData(i, m_settings[i]);
    }
}
string[]m_设置;
公共无效显示集GUI()
{
var dialog=新建OpenFileDialog{
Filter=“数据源(*.ini)|*.ini*|所有文件|*.*.};
如果(dialog.ShowDialog()!=DialogResult.OK)返回;
m_settings=File.ReadAllLines(dialog.FileName);
到期解决方案(正确);
}
受保护的覆盖实例(IGH_DataAccess DA)
{
如果(m_设置==null)
{
AddRuntimeMessage(GH_RuntimeMessageLevel.Warning,
“您必须声明一些有效的设置”);
返回;
}
对于(变量i=0;i

提前谢谢

这是通过使用以下代码解决的,将SetData替换为SetDatalist,不使用循环,并使用不同的方式拆分字符串:

  string m_settings_temp;
            string[] m_settings;
            public void ShowSettingsGui()
            {
                var dialog = new OpenFileDialog { Filter = "Data Sources (*.ini)|*.ini*|All Files|*.*" };
                if (dialog.ShowDialog() != DialogResult.OK) return;

                m_settings_temp = File.ReadAllText(dialog.FileName);
                m_settings = m_settings_temp.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
                ExpireSolution(true);
            }



            protected override void SolveInstance(IGH_DataAccess DA)
            {
                if (m_settings == null)
                {
                    AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "You must declare some valid settings");
                    return;
                }

                else

                {  
                        DA.SetDataList(0, m_settings);
                }  

            }

错误消息出现在哪里?如果存在异常,请提供包含堆栈跟踪的异常。是否确实读取的文件有10行?第[1]行不是第一行,第[0]行是第一行。。他们不匹配吗?因为你的陈述含糊不清。是的,举一个你输入的例子,当你问2行是否有问题时,我们怎么知道?setdata做什么?当你追踪它时,我看不到行号与代码不匹配。正如我所说的。您问我们是否有两条特定的线路会导致问题,第1行:“加速度=0”和第2行“床大小=200200”。。您调用setdata—您尚未列出的代码。如果这会引起问题,你怎么能指望我们回答?