在C++中,它是这样完成的:
tPacket * packet = (tPacket *)data; //data is byte[] array; tPacket is a structure
Run Code Online (Sandbox Code Playgroud)
在C#中:
tPacket t = new tPacket();
GCHandle pin = GCHandle.Alloc(data, GCHandleType.Pinned);
t = (tPacket)Marshal.PtrToStructure(pin.AddrOfPinnedObject(), typeof(tPacket));
pin.free();
Run Code Online (Sandbox Code Playgroud)
数据是在通过TCP接收数据包后用作接收缓冲区的字节数组.该代码将数据放入tPacket(结构)的实例中,以便稍后可以访问该结构.
如何在Delphi中完成?
我正在尝试在面板上绘制文本(面板有背景图片).
它工作得很好,但是当我最小化然后最大化应用程序时,文本就消失了.
我的代码:
using (Graphics gfx = Panel1.CreateGraphics())
{
gfx.DrawString("a", new Font("Tahoma", 5), Brushes.White, new PointF(1, 1));
}
Run Code Online (Sandbox Code Playgroud)
如何保持静态,以免丢失?
我不知道我输错了'far'而不是'var'.我注意到关键字是粗体,这让我觉得它是Delphi语法的一部分.
有没有人知道"远"关键字?
我有一个烦人的问题 - 我想使用带有图像的列表视图作为菜单.假设列表视图包含3个"图像".
现在,当我单击"Main"图像时,我将显示"Main"面板,同样显示"Options"图像,其中我显示"Options"面板.但这是烦人的部分.我的表格上有3个面板.因此,每当我想编辑一个面板时,我必须调整其他两个面板的大小,以便我可以编辑第一个面板,因为它们都被抛在窗体上.编辑面板真的很烦人.
是否有某种控件相当于wxWidgets wxListBook控件?或者有人知道如何解决这个问题吗?我在问设计时间
谢谢!
我正在开发一个Xamarin Android应用程序,我需要制作一个循环ImageView.
怎么能实现这一目标?
在我从XP迁移到Vista之后,我意识到我的C#程序不起作用.
这就是这样的情况:我在C#应用程序中编写了一个C++ DLL.这个DLL在XP中运行良好,但是当我转移到Vista时,它不再适用于C#.
我在Delphi中测试它,工作正常,但C# - 没有.
我写了额外的代码,以便在C#中更容易检查.
if (LoadLibrary("blowfish.dll") == 0)
{
Misc.LogToFile("error", true);
Application.Exit();
}
Run Code Online (Sandbox Code Playgroud)
它不需要C++运行时,因为它使用库编译并且它在Vista上的Delphi中工作,但不适用于C#.
问题出在哪里?
提前致谢.
我正在使用Delphi 2009,我把我的问题解决了,但我得到的答案已经过时了,因为它在Delphi2009中无法识别StrtoFloat.
我问如何将整数转换为'1900000'到'1,900,000'?
我使用Listview.items.item [X] .caption来更改列表框中的第一列,但现在我必须在运行时进一步更改.我看到的唯一方法是将列表框中的项目作为TListItem,编辑它,添加它并改变位置,但这不适合它,因为我在listview上有很多项目.
有没有更简单的方法来实现这一点,就像我改变第一项的方式一样?
提前致谢.
我正在使用Delphi 2009,我在delphi.about.com上学习了一些教程,但我无法设置它.
我创建了一个OnKeyPress/OnkeyDown事件,并设置一个断点来查看是否调用了该事件,但是没有以任何方式调用它.
问题出在哪儿?
编辑:
procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Beep; //breakpoint is set here.
end;
Run Code Online (Sandbox Code Playgroud) 我在Delphi的UserVoice上请了一个功能,但我不明白Nick Hodges的答案.