Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB6中get语句的C#等价物是什么?_C#_.net_Vb6 - Fatal编程技术网

VB6中get语句的C#等价物是什么?

VB6中get语句的C#等价物是什么?,c#,.net,vb6,C#,.net,Vb6,简单的问题。在C#中,功能相同的转换是什么样子的 VB6: 在VB6中,字符串存储为Unicode。在内存中,VB6字符串存储4个字节的开销,每个字符加上2个字节,因此您的语句Dim rec As String*200实际上分配了4+200*2字节的内存,即404字节。由于VB6字符串和C#字符串都是Unicode,因此不需要在此处进行任何更改 VB6中的Get命令从文件中检索字节。格式为Get[#]filenumber、[byte position],variableName。这将检索从字节位

简单的问题。在C#中,功能相同的转换是什么样子的

VB6:


在VB6中,字符串存储为Unicode。在内存中,VB6字符串存储4个字节的开销,每个字符加上2个字节,因此您的语句
Dim rec As String*200
实际上分配了
4+200*2
字节的内存,即404字节。由于VB6字符串和C#字符串都是Unicode,因此不需要在此处进行任何更改

VB6中的
Get
命令从文件中检索字节。格式为
Get[#]filenumber、[byte position],variableName
。这将检索从
字节位置
偏移量开始的
变量名称
的字节数。在VB6中,字节位置是基于1的

现在,要翻译代码,它应该类似于:

int pos = (rs.Fields["cJobnum"].Value).SubString(6, 4);
tempFile.Read(tempBuf, pos - 1, 200);

请注意,
SubString
是基于0的,
Mid
是基于1的,因此我使用了
6
而不是
7
。另外,
Read
方法中的偏移量是基于0的
Get
在VB6中是基于1的,所以我们减去1

请阅读有关代码格式的帮助中心文档-如果要格式化代码块,请缩进它,而不是使用反勾号。。。这样看起来更清楚了。您还应该尝试向不了解VB6的人解释
Get
的功能。。。否则,您将自己局限于了解C#和VB6的人…@JohnSaunders:No.NET默认使用UTF-8,这与ASCII相同,对于仅包含ASCII字符的文件。这是我的一个老问题,我使用的是
Put
而不是
Get
,但它可能会帮助您走上正确的道路:@JohnSaunders:在这种情况下,根本不应该使用文本编码。。。使用ASCII将丢失数据。这段代码读取数据的方式有很多错误,但在我们了解VB6代码的功能之前,很难说正确的.NET代码是什么样子。请在VB6代码中显示
rec
的声明。如果它是自定义的
类型
,那么也显示该类型的定义。谢谢兄弟!这解决了问题,就像我说的,这是一个让我发疯的简单解决方案。所以真正的字节偏移量实际上是,“1000x200=200000”,所以你把我的问题直接钉在了头上。
FileStream tempFile = File.OpenRead(tempPath);
var tempBuf = new byte[200];
var tempOffset = Int32.Parse(StringHelper.Mid(rs.Fields["cJobnum"].Value, 7, 4)) + 1;
tempFile.Seek(tempOffset , SeekOrigin.Begin);
tempFile.Read(tempBuf, 0, 200);
rec.Value = new string(System.Text.Encoding.Default.GetChars(tempBuf));
tempFile.Close();
TestRec = rec.Value;
Fail = (string)FindFailure(ref TestRec);
int pos = (rs.Fields["cJobnum"].Value).SubString(6, 4);
tempFile.Read(tempBuf, pos - 1, 200);