我正在尝试使用C#中的System.Runtime.InteropServices.ComTypes.IStream,但我遇到了一些麻烦.根据MSDN,C#定义如下所示:
void Read(
byte[] pv,
int cb,
IntPtr pcbRead
)
Run Code Online (Sandbox Code Playgroud)
基本上,我可以从流中读取数据,但上面的"pcbRead"值始终为"0"(即使字节数组包含我的数据).做一些阅读,似乎pcbRead参数设置得有点棘手(尽管我对C#还不熟悉).
无论如何,我的代码基本上是这样的:
myPtr = (IntPtr)0;
int buffSize = 8192;
byte[] buffer = new byte[buffSize];
while (true)
{
strm.Read(buffer, buffSize, myPtr);
fs.Write(buffer, 0, myPtr.ToInt32());
if (myPtr.ToInt32() < buffSize) break;
}
Run Code Online (Sandbox Code Playgroud)
同样,问题是"myPtr"在读取后仍然包含"0",尽管"缓冲区"似乎包含有效数据.
我有许多C#自定义事件与树中选择的项目相关联,然后使用上下文菜单触发对所选项目的某些操作.我开始为每个自定义事件创建一个单独的基于EventArgs的类,以打包事件的必要数据.
在后视中,我意识到我的大多数(可能是所有)自定义事件都需要至少传递树选择所代表的底层对象列表.有些事件也可能需要额外的数据.
考虑到这一点,我想知道以下任何一种是否是可接受的做法?
对多个事件使用相同的基于EventArgs的自定义类(那些只需要传递对象列表的事件).显然,这应该可行,但似乎脱离了一些用于连接事件机制的推荐命名约定.
创建一个基类,它包装我经常需要的对象列表,然后从中派生其他类,因为需要额外的数据.
也许还有别的什么呢?
目前,我只有少数自定义事件,但需要添加更多.由于我看到每个事件所需的数据都出现了一种模式,我希望在继续之前有一个更好的计划.
谢谢你的建议.
使用C#,我需要读取使用FORTRAN创建的压缩二进制文件.该文件存储在为(在"未格式化连续文件"部分大约中途下页)这里所描述的"无格式顺序"格式:
http://www.tacc.utexas.edu/services/userguides/intel8/fc/f_ug1/pggfmsp.htm
正如可以从URL看到,该文件被组织成130字节或更少字节的"块",并且包括围绕每个组块2长度个字节(由FORTRAN编译器插入).
因此,我需要找到一种有效的方法来解析实际的文件有效负载,而不是插入编译器的格式.
一旦我从文件中提取了实际的有效负载,我就需要将其解析为不同的数据类型.这将是下一个练习.
我的第一个想法是使用将整个文件篡改为字节数组File.ReadAllBytes.然后,只需遍历字节,跳过格式化并将实际数据传输到第二个字节数组.
最后,那第二个字节数组应该包含实际的文件内容减去所有格式,这我倒是则需要通过后面去得到我所需要的.
由于我对C#还不熟悉,我认为可能有一种更好,更可接受的解决方法.
此外,如果它有用,这些文件可能相当大(比如说30MB),但大多数会小得多......
我有一个包含已知数量的double值的字符串.解析字符串并将结果插入匹配的标量变量的最简洁方法(通过C#)是什么?基本上,我想做相当于这个sscanf语句,但在C#中:
sscanf( textBuff, "%lg %lg %lg %lg %lg %lg", &X, &Y, &Z, &I, &J, &K );
Run Code Online (Sandbox Code Playgroud)
...假设" textBuff"可能包含以下内容:
"-1.123 4.234 34.12 126.4 99 22"
......并且每个值之间的空格字符数可能会有所不同.
谢谢你的任何指示.
作为相对较新的C#中,我一直在研究自定义事件最近,虽然我觉得我现在明白需要设置一个自定义事件的基础件,我无法确定,其中每一块属于.具体来说,这就是我想要做的.
我有一个树控件,表示内部数据结构的布局.当数据在树中重新排列时(通过拖放),我需要重新排列基础数据结构以匹配.
所以,我试图从树控件的"Drop"事件处理程序中激活我自己的自定义事件(在我验证了drop之后).我的想法是我的事件的订阅者将处理基础数据的重新排序.
我只是在努力确定,其中每件事件机械应建立和/或使用.
如果有人能为我提供上述基本样本,那就太好了.例如,可能是一个简单的示例,用于在现有的button_click事件中设置和触发自定义事件.这似乎是我正在尝试做的很好的模拟.
此外,如果我对这个问题的处理方式看起来完全错误,我也想知道.