我有这段代码:
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);
答案 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);