【问题标题】:Still Need Help! The best overloaded method match for 'XDevkit.IXboxDebugTarget.GetMemory(uint, uint, byte[], out uint)' has some invalid arguments [duplicate]仍然需要帮助! 'XDevkit.IXboxDebugTarget.GetMemory(uint, uint, byte[], out uint)' 的最佳重载方法匹配有一些无效参数 [重复]
【发布时间】:2012-06-21 16:41:30
【问题描述】:

可能重复:
The best overloaded method match for 'XDevkit.IXboxDebugTarget.GetMemory(uint, uint, byte[], out uint)' has some invalid arguments

不知道为什么会被否决,我只是需要帮助。我已经为此苦苦挣扎了几个小时,我快要完成了,如果你不喜欢这篇文章,请继续前进,不要投反对票,这样没人能看到它!

好的,我已经在谷歌上搜索并阅读了类似这样的答案和问题,但是对于我遇到的这些问题中的任何一个,我都没有找到我可以理解的解释,我希望这里的人可以提供帮助!

Error1: 'XDevkit.IXboxDebugTarget.GetMemory(uint, uint, byte[], out uint)' 的最佳重载方法匹配有一些无效参数

基本代码:

XDevkit.IXboxDebugTarget.GetMemory(uint, uint, byte[], out uint)

我有什么新:

        uint num1;
        uint num2;
        uint num4;


        num1 = Convert.ToUInt32(textBox2.Text);
        num2 = Convert.ToUInt32(textBox3.Text);
        num4 = Convert.ToUInt32(textBox5.Text);
        byte[] num3;
        num3 = BitConverter.GetBytes(Convert.ToInt32(textBox3.Text));


        IXboxManager xbm = new XboxManager();
        IXboxConsole xbc = xbm.OpenConsole("textBox1.Text"); //Or Console Name in "" 
        IXboxDebugTarget xdt = xbc.DebugTarget;
        xdt.ConnectAsDebugger("XeDevMemPatcher", XboxDebugConnectFlags.Force); // this isn't always needed 
        IXboxDebugTarget.GetMemory(num1, num2, num3[], out num4);

    }

使用此代码编辑当前错误

1) 当前上下文中不存在名称“Encoding”

2) 'XDevkit.IXboxDebugTarget.GetMemory(uint, uint, byte[], out uint)' 的最佳重载方法匹配有一些无效的 2222 参数

3) 参数 3:无法从 'byte' 转换为 'byte[]'

好的,所以这显然非常令人困惑,因为我一个人做的任何事情或基于答案都不起作用,所以我只是将整个源代码发布在这里供大家查看,希望这会有所帮助: 抱歉,我无法发布 GUI 的图片,因为我没有足够的 REP,但希望这应该没问题:

使用系统; 使用 System.Windows.Forms;

命名空间 XDevkit { 公共部分类Form1:表格 { 公共表格1() { 初始化组件(); }

    private void button1_Click(object sender, EventArgs e)
    {
        IXboxManager xbm = new XboxManager();
        //IXboxConsole xbc = xbm.OpenConsole(xbm.DefaultConsole); // dev 
        IXboxConsole xbc = xbm.OpenConsole("textBox1.Text");
        IXboxDebugTarget xdt = xbc.DebugTarget;
        xdt.ConnectAsDebugger("XeDevMemPatcher", XboxDebugConnectFlags.Force);

    }

    private void button2_Click(object sender, EventArgs e)
    {
    uint num1 = Convert.ToUInt32(textBox2.Text);
    uint num2 = Convert.ToUInt32(textBox3.Text);
    byte[] num3 = Encoding.ASCII.GetBytes(textBox4.Text);
    uint num4 = Convert.ToUInt32(textBox5.Text);
    int num5 = Convert.ToInt32(textBox4.Text);

// ...

    if (num3.Length > 1) 
    {    
        IXboxManager xbm = new XboxManager();
        IXboxConsole xbc = xbm.OpenConsole("textBox1.Text");
        IXboxDebugTarget xdt = xbc.DebugTarget;
        xdt.ConnectAsDebugger("XeDevMemPatcher", XboxDebugConnectFlags.Force);
        IXboxDebugTarget.GetMemory(num1, num2, num3[1], out num4);
}

    private void button3_Click(object sender, EventArgs e)
    {
        string a;
        a = "textBox6.Text";

        IXboxManager xbm = new XboxManager();
        IXboxConsole xbc = xbm.OpenConsole(textBox1.Text);
        IXboxConsole.ScreenShot(a)

    }
}

}

【问题讨论】:

  • 错误信息很清楚:num3 是一个字节,那么num3[1] 是什么意思呢?你期望结果是什么?
  • 我知道,但是如果您查看基本代码,它需要一个字节和索引器
  • 啊,我明白了。它实际上需要一个字节数组,而您传递的是一个字节。你确定你正确地调用了这个方法吗?比如你给num4赋值,但是num4是out参数,保证会被方法覆盖。
  • 不,我不确定它是否被正确调用,我改用 Dennis Traub 的解决方案来调用它们,但是应该覆盖 num4

标签: c# byte syntax-error object-reference invalid-argument


【解决方案1】:

错误 1: num3 的类型为 byte,它没有索引器。

如果您将代码修改为以下内容,该示例可能会起作用:

    uint num1 = Convert.ToUInt32(textBox2.Text);
    uint num2 = Convert.ToUInt32(textBox3.Text);
    byte[] num3 = Encoding.ASCII.GetBytes(textBox4.Text);
    uint num4 = Convert.ToUInt32(textBox5.Text);
    int num5 = Convert.ToInt32(textBox4.Text);

    // ...

    if (num3.Length > 1) {    
        IXboxManager xbm = new XboxManager();
        IXboxConsole xbc = xbm.OpenConsole("textBox1.Text");
        IXboxDebugTarget xdt = xbc.DebugTarget;
        xdt.ConnectAsDebugger("XeDevMemPatcher", XboxDebugConnectFlags.Force);
        IXboxDebugTarget.GetMemory(num1, num2, num3[1], out num4);
    }

错误 2: IXboxConsole.ScreenShot 是实例方法,而不是类(又名静态)方法。您必须先创建一个实例,然后才能调用实例方法:

IXboxManager xbm = new XboxManager();
IXboxConsole xbc = xbm.OpenConsole(textBox1.Text);
xbc.ScreenShot("screenshot");

【讨论】:

  • 是的,我想了这么多,但是我该怎么做,因为基本代码需要一个索引器,没有一个索引器就无法工作
  • 在不知道基本代码或您要做什么的情况下,解决问题的方法是将 num3 声明为 byte[] 类型而不是 byte。
  • @user,基本代码不需要“索引器”。它需要一个 array.
  • @CodeHxr 我在帖子中告诉过你两个字符串的基本代码
  • @user,一个字节数组:var byteArray = new byte[5]; 一个索引器:byteArray[1]。它们是完全不同的概念,方法消耗的是前者,而不是后者。
【解决方案2】:

从错误消息中可以很清楚地看到。 num3 不是字节数组,因此您无法使用数组索引访问它。如果您想按需要访问它,则需要将任何 textbox3.Text 转换为字节数组。您尚未向我们提供此信息。

编辑:

如果要将文本框中的值转换为字节数组,可以执行以下操作:

byte[] num3 = BitConvert.GetBytes(Convert.ToInt32(textBox3.Text));

然后您可以根据需要访问num3[1](前提是数组的长度至少为1)。

【讨论】:

  • 您具体需要哪些信息?
  • textBox3.Text 中的任何值都必须是 byte 数组,而不是 byte。
  • @Bryan Crosby 我将如何将文本转换为字节数组?
  • @user1205336:您可以使用上述编辑转换为字节数组。
  • 我试过了,由于某种原因它仍然给我错误,这是一个真正的痛苦:/
猜你喜欢
  • 1970-01-01
  • 2015-12-11
  • 2015-10-14
  • 2018-07-14
  • 2013-01-07
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
相关资源
最近更新 更多