我正在制作一个涉及内存读取的程序,有时在尝试读取内存时会出现问题。调试器告诉我错误是在IF条件下,所以我认为我的问题是内存获取的随机值(可能是带字母的东西,因为我试图读取它崩溃的整数?)
if (Convert.ToInt32(mem3.ReadPointer(address3)) >= 1 && Convert.ToInt32(mem3.ReadPointer(address3)) <= 100)
label5.Text = "LVL " + mem3.ReadPointer(address3).ToString();
我的问题是,如果某个值超出范围,是否有一种方法可以跳过代码(在本例中为if)?
答案 0 :(得分:0)
我建议使用TryParse
来代替..如果这确实是你的问题(尽管使用随机内存...很难说没有更多上下文可能会出现问题):
int val;
if (int.TryParse(mem3.ReadPointer(address3), out val)) {
// all good, continue using val
if (val >= 1 && val <= 100) // ...
}
else {
// failed conversion
}
如果您在64位计算机上运行,那么您可能希望将指针值存储在long
而不是int
...所以它不会溢出。
编辑:
ReadPointer
返回什么?一个完整的内存地址或地址的值?现在我已经重新阅读了你的问题,我并不完全确定你所追求的是什么(但为了以防万一我会留在这里)。