不兼容的类型:'WideChar'和'Char'delphi 7

Smi*_*ith 1 delphi error-handling delphi-7

当使用shellexecute调用外部progrem时,我的delphi代码中出现错误

procedure TReceiverMainForm.btnSearchClick(Sender: TObject);
 var
  args:string;
begin
  mmoResult.Clear;
//  args := ' /d='  + TIdURI.URLEncode(Trim(sSearch)) + ' /t=ReceiverMainForm /s=30 /m=1'
args := ' /q='  + httpencode(Trim(txtSearch.Text)) + ' /t=ReceiverMainForm /s='+Trim(txtS.Text)+' /m='+Trim(txtM.Text);
  ShellExecute(Handle, 'open', 'YTD.exe', pWideChar(args), nil, SW_SHOWNORMAL);
end;
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

RRU*_*RUZ 7

ShellExecute函数定义如下

function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
  Directory: PChar; ShowCmd: Integer): HINST; stdcall;
Run Code Online (Sandbox Code Playgroud)

所以问题是你将args变量转换为a PWideChar而不是a PChar.

试试这个代码

ShellExecute(Handle, 'open', 'YTD.exe', PChar(args), nil, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

请记住,Delphi 7早于Unicode Delphi开发.PChar8位字符类型的别名也是如此PAnsiChar.