Delphi 编码结果不起作用

Delphi 编码结果不起作用,delphi,delphi-10-seattle,Delphi,Delphi 10 Seattle,我有一个用Delphi4编写的程序,并试图将其转换为Delphi xe10。我不明白的是这一点 Cmd[0] := 2; // Number of equipment to talk to Cmd[1] := 22; // My device address Cmd[2] := 0; MResults.Lines.Add('Reciving...'); Refresh(); S

我有一个用Delphi4编写的程序,并试图将其转换为Delphi xe10。我不明白的是这一点

    Cmd[0] := 2;                   // Number of equipment to talk to
    Cmd[1] := 22;                  // My device address
    Cmd[2] := 0;
    MResults.Lines.Add('Reciving...');
    Refresh();

    Srlen := High(RecBuff);                               

     Ret := GpListen(@Cmd, @Srlen, @RecBuff);              // gets returned value
    if CheckRet('GpListen', (Ret and $FF), csBuf) = 0 then 
    begin
        RecBuff[Srlen] := Chr(0);                            // ??
        MResults.Lines.Add(RecBuff);               // returned 
        //csBuf := Format('????', [Srlen]); ////?some error??
    end;
问题是RecBuff(RecBuff:array[0..9999]of Char;),它的开头充满了#0,如下所示:

但一旦

Ret := gpListen(@cmd, @srlen, @recbuff); 
is ran recbuff现在看起来像这样:

日本有很多地方。如何将其正确编码到记事本上

试试换衣服

RecBuff:array[0..9999] of Char;

看看它是否有效。这可能会提示对代码中的其他位置进行一些更改

在Delphi 10中,“Char”是2字节实体(16位字符,UniCode),而Delphi 4是1字节实体(8位字符,ANSI)。这两种编译器的通用格式都是“AnsiChar”,它是一个8位字符

您可能还会遇到字符串变量的问题,这些变量现在由16位字符而不是8位字符填充

另外-在进一步转换之前阅读。

尝试更改

RecBuff:array[0..9999] of Char;

看看它是否有效。这可能会提示对代码中的其他位置进行一些更改

在Delphi 10中,“Char”是2字节实体(16位字符,UniCode),而Delphi 4是1字节实体(8位字符,ANSI)。这两种编译器的通用格式都是“AnsiChar”,它是一个8位字符

您可能还会遇到字符串变量的问题,这些变量现在由16位字符而不是8位字符填充


另外-在进一步转换之前阅读。

在西雅图,字符串和字符默认为Unicode

与设备的交换通常通过Ansi字符(一字节)缓冲区进行

所以使用AnsiString、AnsiChar、PAnsiChar等

RecBuff:Ansi字符的数组[0..9999]


我们已经在西雅图讨论过这个问题,字符串和字符默认为Unicode

与设备的交换通常通过Ansi字符(一字节)缓冲区进行

所以使用AnsiString、AnsiChar、PAnsiChar等

RecBuff:Ansi字符的数组[0..9999]


我们已经讨论过这个问题了。谢谢你的链接,这个unicode/ansi转换真让我受不了。另请参阅Embarcadero的迁移文档:完美。谢谢你的链接,这个unicode/ansi转换真让我受不了。另请参阅Embarcadero的迁移文档:我已经为你插入了图像。下一次的两个技巧:1)我们不需要这些大屏幕截图,只有相关的局部变量部分可以做2)在没有指定变量类型的情况下,永远不要在你的问题中添加代码(我们现在必须假设animal cmd是什么)。我已经为你插入了图片。下一次有两个提示:1)我们不需要这些大屏幕截图,只有相关的局部变量部分可以做2)在没有指定变量类型的情况下,永远不要在问题中添加代码(我们现在必须假设animal cmd是什么)。