通常我会这样写:
- function Test(Str,RValue: PChar): Integer; stdcall;
- var S:String;
- begin
- S:='This is Test'+Str;
- StrPCopy(RValue,S);
- Result:= Length(S);
- end;
今天看了CSDN上叫僵哥的一番话,很受教育,如下:
- function Test(Src: PChar;srcLen: Integer;Buffer: PChar;var Size: Integer): boolean; stdcall;
- begin
- Result := false;
-
-
-
-
-
-
-
-
- if (Buffer = Nil) or (Size < srcLen) then begin
- SetLastError(Byte(Buffer <> Nil) * 234 );
- Size := srcLen;
- Exit;
- end;
-
- Move(Src^, Buffer^, srcLen);
- Size := srcLen;
- Result := true;
-
- end;
不过还是有个疑问,Move方法出来的字符串最后多了一个@不知道为什么?慢慢消化吧