警告: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;