关于 CharArrayToString 的问题

 

我在 MT4 中通过 Kernel32.dll 的 WriteFile 函数成功创建了一个 Unicode 编码的 test.csv 文件,并写入了一个 7 个字符的字符串。但是在读取这个文件中的字符串时,通过 CharArrayToString 函数的转换,却只能得到字符串中的第一个字符、无法读取完整的字符串。不知道哪里出了问题,望各位大侠指教,谢谢。

下面是源代码:

string ReadFile(string Filename)
{
  //int Len;
  string strFileContents = "";
  int rFileHandle = CreateFileW(Filename, 0x80000000 /*GENERIC_READ*/, 3 /*SHARE READ|WRITE*/, 0, 3 /*OPEN_EXISTING*/, 0, 0);
  if (rFileHandle == -1) {
      // Open failed 
  } 
  else 
  {
    int sz = GetFileSize(rFileHandle, 0);
    if (sz > 0) 
    {
      uchar buffer[];
      ArrayResize(buffer, sz);
      int read[1];
      ReadFile(rFileHandle, buffer, sz, read, 0);
      if (read[0] == sz)
        strFileContents = CharArrayToString(buffer, 0, read[0]);  //这里只能得到字符串中的第一个字符 
        //strFileContents = CharArrayToString(buffer, 0, read[0], 65001);
        //strFileContents = CharArrayToString(buffer, 0, -1);
      //Len = ArraySize(buffer); //这里得到的数组大小确实是14位,是7个字符组成的字符串的长度
    }
  }
  CloseHandle(rFileHandle);
  return strFileContents;
  //return IntegerToString(Len);
}
 
你是Unicode编码的文件,读数据时用 ushort buffer[], 用 ShortArrayToString()转换。
 
Ziheng Zhuang:
你是Unicode编码的文件,读数据时用 ushort buffer[], 用 ShortArrayToString()转换。

按照 Ziheng Zhuang 的方法,问题完美解决,谢谢 Ziheng Zhuang