在shellexecute中类型不匹配吧
pchar类型代表从索引下标开始的以Null结尾的字符数组
pascal长字符串赋值兼容pchar类型,所以可以将pchar类型字符串直接赋给string类型变量
例
var s1:string ;
p1:pchar
begin
p1:='aaa';
s1:=p1;
end;
不能将string类型的变量赋值给pchar类型的变量,此时必须进行强制转换.
function ansipos(const substr,s:string):integer
var p:pchar;
begin
result:=0;
p:=ansistrpos(pchar(s),pchar(substr));
if p<> nil then
result:-integer(p)-Integer(pchar(s))+1;
end;
第三pchar类型和string类型可以在双目运算表达式中混合使用.
第四:如果子程序或对象的方法以长字符串为参数,则调用时的实际参数可以为pchar类型,此时delphi会自动强制转换,
你所说的用shellexecute调用属于第二种,
更具体的可以参照《参透delphi/kylix》,84页