如何将字符串变量传递给期望PChar的函数?

时间:2013-04-02 21:01:44

标签: string delphi pchar

我有这段代码:

ShellExecute(Handle, 'open',
             'C:\Users\user\Desktop\sample\menu\WTSHELP\start.html',
             nil, nil, sw_Show);

如何用字符串变量替换第三个参数中的文字?如果我使用如下代码,则无法编译。

var
  dir: string;

dir := 'C:\Users\user\Desktop\sample\menu\WTSHELP\start.html';
ShellExecute(Handle, 'open', dir, nil, nil, sw_Show);

2 个答案:

答案 0 :(得分:9)

我认为dir的类型为string。然后

ShellExecute(Handle, 'open', PChar(dir), nil, nil, SW_SHOWNORMAL);

应该有效。的确,编译器告诉你这个;它说像

[DCC Error] Unit1.pas(27): E2010 Incompatible types: 'string' and 'PWideChar'

(另请注意,拨打ShellExecute时通常会使用SW_SHOWNORMAL。)

答案 1 :(得分:6)

ShellExecute是一个Windows API。因此,您需要将PChar类型传递给它。

如果我正确地假设您的dir变量是一个字符串,那么您可以将该字符串转换为PChar,并按如下方式调用ShellExecute

ShellExecute(Handle,'open', PChar(dir) ,nil,nil,sw_Show);