7

我有这个代码:

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);
4

2 回答 2

9

我假设那dir是 type string。然后

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

应该管用。事实上,编译器会告诉你这一点;它说的是

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

(另请注意,您通常SW_SHOWNORMAL在调用时使用ShellExecute。)

于 2013-04-02T21:04:15.733 回答
7

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

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

ShellExecute(Handle,'open', PChar(dir) ,nil,nil,sw_Show);
于 2013-04-02T21:05:27.577 回答