以下のコードを実行すると、次のエラー メッセージが表示されます。
c#: 出力パラメーター インデックス [1] コンポーネントに対して高すぎるか低すぎます。
は、 「現在の反復回数を取得する」IGH_DataAccess
というヘルプで既に反復回数を提供しています。ソリューション中にコンポーネントで関数が初めて呼び出されると、反復カウンターはゼロになります。後続の呼び出しごとに 1 ずつ増加します。使用すると、最初の行が表示されます。SolveInstance()
DA.SetData(0, m_settings[0]);
使用したプログラムにエラー メッセージが表示され、次の例外が発生しDA.SetData(i, m_settings[i]);
ます。
System.Exception occurred
Message=Unknown file
Source=Grasshopper
StackTrace:
at Grasshopper.Global_Proc.ASSERT(Guid assert_id, String message, Exception exception) in C:\dev\Grasshopper\1.0\root\src\GH_GlobalProc.vb:line 98
InnerException:
以下は、IGH_DataAccess.SetData メソッドの説明です。Stores data in an output parameter during GH_Component.SolveInstance(). Use this function only for setting individual data items. If you want to set lists of data, you *must* call SetDataList() instead.
コードをDA.SetDataList(i, m_settings[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]);
}
}
前もって感謝します!