我有一个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失败并出现以下错误:
尝试读取或写入受保护的内存.这通常表明其他内存已损坏.
我猜测使用固定阵列是一种解决方案,但它是否可以在不必诉诸不安全代码的情况下完成?
以下代码不起作用,因为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)
为什么??
使用MSDN中的示例我正在尝试在Excel 2007中设置单元格的值.以下是我采取的步骤:
Enable all Macro's和Trust access to VBA object model.插入以下功能:
Function MyTest(rg As Range)
rg.Value = 1
MyTest = 1234
End Function
Run Code Online (Sandbox Code Playgroud)将公式添加=MyTest(B1)到A1处的单元格.
当执行第一行MyTest时,调试器简单失败.没有任何错误,它会停止调试并#VALUE!在A1中显示.B1仍然是空的.
我试过设置.Formula而不是.Value.我尝试过使用ActiveSheet和Worksheets["Sheet1"]访问工作表.可能是导致此错误的原因是什么?