I have this code:
ShellExecute(Handle, 'open',
'C:\Users\user\Desktop\sample\menu\WTSHELP\start.html',
nil, nil, sw_Show);
How can I replace the literal in the third argument with a string variable? If I use code like below it doesn't compile.
var
dir: string;
dir := 'C:\Users\user\Desktop\sample\menu\WTSHELP\start.html';
ShellExecute(Handle, 'open', dir, nil, nil, sw_Show);
I assume that dir
is of type string
. Then
ShellExecute(Handle, 'open', PChar(dir), nil, nil, SW_SHOWNORMAL);
should work. Indeed, the compiler tells you this; it says something like
[DCC Error] Unit1.pas(27): E2010 Incompatible types: 'string' and 'PWideChar'
(Also notice that you normally use SW_SHOWNORMAL
when you call ShellExecute
.)
ShellExecute
is a Windows API. Thus, you need to pass the PChar
type to it.
If I assume correctly that your dir variable is a string, then you can cast the string to be a PChar, and call ShellExecute
as follows:
ShellExecute(Handle,'open', PChar(dir) ,nil,nil,sw_Show);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With