- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将一些 C# 代码翻译成 Delphi,我明白 (msg = TMsg):
(int)msg.LParam
只是一个 Actor (如果我错了请纠正我),但是以下内容让我感到困惑:
Marshal.ReadInt32( (IntPtr)msg.WParam, 4 )
有人可以澄清一下吗?
最佳答案
这只是从指针中读取一个 4 字节整数。在托管 .net 代码中,您没有指针(除非您使用不安全的代码),因此该框架提供了工具来帮助在 native 世界和托管世界之间进行互操作。 .net 库的 MSDN 文档非常全面,当然也描述了 Marshal.ReadInt32
.
这里额外的复杂是有一个额外的 4 个字节的偏移量。实际上,指针可能指向一个结构,这段代码在结构的偏移量 4 处挑选整数值。这绝对是对代码现状最有可能的解释。
现在,直译为:
PInteger(msg.WParam+4)^
但您也可以像这样用 Delphi 编写它:
type
TMyRecord = record
i1: Integer;
i2: Integer;
end;
PMyrecord = ^TMyRecord;
....
value := PMyRecord(msg.WParam)^.i2;
如果您知道此 WParam
与哪条消息相关,那么您也将知道此处要使用的真正 record
是什么。因此您不需要定义专用记录,因为 Windows.pas
已经这样做了。
关于c# - C# 的 Marshal.ReadInt32(IntPtr) 在 Delphi 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809978/
如何从文件中读取数字?当我使用 readInt 方法时,我得到一个很大的数字,并且它不等于文件中的数字。如何解决? 扫描仪不是一个好主意,因为文件包含超过 10 亿个数字,这将需要很长时间。 这是一个
scala 的命令行解释器显示: scala> Console.readInt warning: there was one deprecation warning; re-run with -dep
我尝试将一些整数和 double 以二进制格式保存到 txt 文件。我认为数字保存正确,但问题是当我尝试使用 readInt() 读取整数时。例如,当整数的值为 12 时,该整数的程序输出为 2087
我想解决一个小问题,但对我来说这是一个大问题。 “该程序应首先询问用户 N;如果 N 超出所需范围,则应再次询问用户。” ACM 库: int N = readInt("Enter N (0 10)
我无法执行 readInt() 但 readObject 工作正常。给我建议一些解决方案。我在服务器端使用以下代码: ObjectInputStream din = new ObjectInputSt
我正在尝试迭代对象数组,并使用扫描仪设置其中一个实例变量。这是引发错误的代码: public void populate(){ int participantID = 0; Scan
我正在构建一个客户端-服务器 Java 应用程序。问题是,当我用 writeInt() 发送 Integer 时,有时它会阻塞 readInt()。 客户端 PrintWriter socketOut
我在我的手机 (Android) 和我的服务器之间做了一个简单的套接字。 手机可以连接到服务器,但我可以为彼此发送或读取数据。 这是我为我的客户(电话端)使用的代码: private static v
我正在使用 Java 套接字让两个 Android 设备与同一个应用进行通信。通信协议(protocol)为: 1. client sends packet size S 2. client send
我有一个输入流来自黑盒(比如 B)。来自这个流的所有消息都是序列化的二进制数据,每条消息都以一个四字节的 int 开头。其中大部分用于记录数据并每天 24 小时运行。我使用 readInt() 方法读
这个问题已经有答案了: How to get the user input in Java? (29 个回答) 已关闭 7 年前。 这是我的代码: import java.io.PrintWriter
我使用 Netty 在 Java 中实现服务器,客户端在 Adobe Flash 中。 当我在缓冲区中发送请求或响应时,我首先写入缓冲区的长度,然后写入数据。我在服务器端使用 ChannelBuf
我是网络编程的新手。 我在一个线程中运行了以下源代码。在其他线程中,我正在关闭 istream、ostream 和 socket,但下面的代码仍然没有打印出 IOException。我在 Androi
我正在使用外部排序和合并来对整数文件进行排序。通常,解决此问题的方法是使用 -Xmx 增加 JVM 的堆大小,但我想知道是否存在一种方法可以在不增加堆大小的情况下改进我的代码。 抛出错误的方法是 me
我正在实现一个“小”客户端/服务器应用程序,例如云。问题是:我是 Java 新手。所以我学得有点快,客户端/服务器通信、数据库、框架、线程也是如此。 我很确定我的代码不会是最好的,但事实是:我必须使用
是否有一个 FILE (fopen?) 函数可以让我从二进制文件中读取一个整数? 到目前为止我正在尝试这个,但是我遇到了某种我看不到的错误,因为程序在没有告诉我的情况下崩溃了。 void opente
在Console.scala我们有很好的方法,例如 readInt、readChar 等。 为什么我们不为 io.Source 提供它们?如果您认为我们应该使用 Java 的 IO 功能,那么为什么要
(请原谅我,因为我不经常用 Java 编写。) 我正在用 Java 编写一个客户端网络应用程序,我遇到了一个有趣的问题。每次调用 readInt() 都会抛出一个 EOFException。变量的类型
我们的应用程序中有一个问题可以简化为以下代码: public static void main(String[] args) throws IOException, ClassNotFoundExce
一方面,我有一个 Java 客户端将整数写入其输出流: int a = 20; dataout.writeInt(a); dataout.flush(); 从另一端我有一个 C 服务器监听连接: in
我是一名优秀的程序员,十分优秀!