小编Mat*_*att的帖子

在C#中将字节数组转换为包含字节数组的类

我有一个C#函数将字节数组转换为类,给定它的类型:

IntPtr buffer = Marshal.AllocHGlobal(rawsize);
Marshal.Copy(data, 0, buffer, rawsize);
object result = Marshal.PtrToStructure(buffer, type);
Marshal.FreeHGlobal(buffer);
Run Code Online (Sandbox Code Playgroud)

我使用顺序结构:

[StructLayout(LayoutKind.Sequential)]
public new class PacketFormat : Packet.PacketFormat { }
Run Code Online (Sandbox Code Playgroud)

这很好,直到我试图转换为包含字节数组的结构/类.

[StructLayout(LayoutKind.Sequential)]
public new class PacketFormat : Packet.PacketFormat
{
  public byte header;
  public byte[] data = new byte[256];
}
Run Code Online (Sandbox Code Playgroud)

Marshal.SizeOf(type)返回16,它太低(应该是257)并导致Marshal.PtrToStructure失败并出现以下错误:

尝试读取或写入受保护的内存.这通常表明其他内存已损坏.

我猜测使用固定阵列是一种解决方案,但它是否可以在不必诉诸不安全代码的情况下完成?

c# serialization struct

6
推荐指数
1
解决办法
1684
查看次数

attr未定义

以下代码不起作用,因为attr未定义:

$("#foo a[href]").each(function()
{
    this.attr("href", "www.google.com");
});
Run Code Online (Sandbox Code Playgroud)

但是这段代码确实:

$("#foo a[href]").each(function()
{
    this.href = "www.google.com";
});
Run Code Online (Sandbox Code Playgroud)

为什么??

javascript jquery attr

2
推荐指数
1
解决办法
5572
查看次数

在Excel中设置范围时VBA失败

使用MSDN中的示例我正在尝试在Excel 2007中设置单元格的值.以下是我采取的步骤:

  1. 在Excel选项中选择Enable all Macro'sTrust access to VBA object model.
  2. 创建一个新的Excel工作簿.
  3. 添加新的VBA模块.
  4. 插入以下功能:

    Function MyTest(rg As Range)
        rg.Value = 1
        MyTest = 1234
    End Function
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将公式添加=MyTest(B1)到A1处的单元格.

当执行第一行MyTest时,调试器简单失败.没有任何错误,它会停止调试并#VALUE!在A1中显示.B1仍然是空的.

我试过设置.Formula而不是.Value.我尝试过使用ActiveSheetWorksheets["Sheet1"]访问工作表.可能是导致此错误的原因是什么?

excel vba function range excel-vba

0
推荐指数
1
解决办法
1611
查看次数

标签 统计

attr ×1

c# ×1

excel ×1

excel-vba ×1

function ×1

javascript ×1

jquery ×1

range ×1

serialization ×1

struct ×1

vba ×1