0

对不起,如果这个问题已经得到解答,我已经搜索和搜索并没有找到答案。

在 c# VS2010 中有一个文本框数组

TextBox[] txtDescription = new TextBox[32];

向此文本框分配值时,我偶尔会收到格式不正确的输入字符串。

txtDescription[1].Text = m_Objects[1].Description;

因为 m_Object 正在通过 udp 从另一台计算机读取文件,所以有时会读取错误。我想检查导致异常的这些“非法”字符并再次读取,但对于我的生活,我无法找出文本框中不允许使用的字符。

是控制字符吗?还是这些或其他的一个子集?

我想我可以创建一个小程序并遍历所有可能性并注意哪些不能使用但是......

4

2 回答 2

1

我相当确定没有任何字符是 TextBox 无法处理的(但这并不是说您可以看到所有字符)。

去弄清楚:

我认为这一行导致您的程序出现异常:

txtDescription[1].Text = m_Objects[1].Description;?

当它出现时,它的内容是m_Objects[1].Description什么?如果您不知道,您可以通过在发生异常并且调试器在该行启动时将鼠标悬停在变量上来发现这一点。

m_Objects[1].Description有时可能是这样吗null?(也不太可能,因为您会看到不同的异常)。

于 2013-06-15T00:25:03.050 回答
0

历史告诉我们,当我们需要检查某些其他软件的“格式是否正确”时,试图进行准确和准确的测试往往是毫无意义的。例如,SQL 注入就发生了这种情况,最终的解决方案是放弃直接从 SQL 片段和用户输入中组合命令,而是以不同的方式处理它们。

因此,与其尝试检查字符串(冒着检查无法准确捕获所有可能错误的风险),我建议您在进行实际检查的代码周围放置一个“try/catch”。如果失败,那么您知道您必须通过网络再次请求该字符串。

另一种方法是使用 CRC 或某种其他形式的错误检测/纠正,以确保通过网络接收的数据与发送的数据正确匹配。或者使用 TCP,如果这是一个选项。

于 2013-06-15T02:40:31.483 回答