function PP_GetTargetName(var Str:PChar):Integer;
begin
  try
    Result:=1;
    Str:=PChar('小秘书');
  except
    Result:=0;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
  var s:String;
begin
  PP_GetTargetName(请问该处该给什么样参数);
end;

解决方案 »

  1.   

    star_of_light(星星之光)
    不行啊,编译时出错
    [Error] Unit1.pas(44): Constant object cannot be passed as var parameter
      

  2.   

    pch:Pchar;
    PP_GetTargetName( pch ); //应该传一个变参...
      

  3.   

    Str要有返回值吗??如果要,建议用procedure
    procedure PP_GetTargetName(var Str:PChar;Var Result:integer=0);
    begin
      try
        Result:=1;
        Str:=PChar('小秘书');
      except
        Result:=0;
      end;
    end;
      

  4.   

    你要定义一个PCHAR的临时变量,把值赋给临时变量,再传临时变量就可以了
    另外function PP_GetTargetName(var Str:PChar):Integer;的写法也有问题,PChar本身是个指针,不需要varprocedure TForm1.Button1Click(Sender: TObject);
      var s:String;
          tempP:Array[0..127]of char;  //不要定义成PCHAR,否则内存空间没有分配
    begin
      tempP:=PChar('小秘书');
      PP_GetTargetName(tempP);
    end