ShortString 转化成 PChar类型

警告:Win32 API函数需要以Null结尾的字符串,不要把ShortString字符串传递给API函数,因为编译器将报错,长字符串可以传递给Win32 API函数。

下面这个ShortStringAsPChar()函数时在STRUTILS.PAS单元中定义的

Function ShortStringAsPChar(Var S :ShortString):PChar;

{这个函数能是一个字符串以Null结尾,这样就能传递给需要PChar类型参数的WIN32 API函数,如果字符串超过254个字符串,多出的部分将被截掉}

begin

  if Length(S)= High(S) then

    begin

      Dec(S[0]); //如果S太长,就截取一部分;

    end;

  S[Ord(Length(S))+1] := #0; //把Null加到字符串的最后;

  Rsult := @S[1];        //返回PChar化的字符串;

end;

原文地址:https://www.cnblogs.com/beeone/p/1797981.html