delphi string转WideString的有关问题

delphi string转WideString的问题
需要用delphi调用vc写的dll中的一个函数,需要传递1个参数,该参数是WideString类型。
例如
SetPram(const prm:WideString);
如果在Delphi中传递空字符串SetPram('');就报错,说无效参数,空字符串中加个空格就没事,但是我的程序必须要传递一个空字符串,不能是空格,需要怎么做。我想应该是string类型的空字符串'',转成WideString不认造成的。


------解决方案--------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  S:WideString;
begin
  S:=StringOfChar(' ',1);
  ShowMessage(S);
end;

------解决方案--------------------
用PWideChar
------解决方案--------------------
引用:
引用:
Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);
var
S:WideString;
begin
S:=StringOfChar(' ',1);
ShowMessage(S);
end;

还是不行!


不行?你測試了沒。。。SHOW出來看一下。。。

procedure TForm1.Button1Click(Sender: TObject);
var
  s:WideString;
begin
  s:=StringOfChar(' ',1);
  ShowMessage(s);
  Edit1.Text:=s+'sss';
end;

------解决方案--------------------
引用:
引用:
var s: Widestring = '';
setparam(s);可行否?

我这么试了也不行。好像Widestring的参数就是不认'';

這個肯定不行,以widestring返回是一個空值,不是空格。。。
------解决方案--------------------
別急,先不要往自己的程序裡套,先把以下語句show出來看下結果?(主要看下edit1的text中顯示的sss前有沒有一個空格字符),這時再檢查你VC寫的DLL的這個widestring參數〈最好跟蹤一下代碼,必要時show出來看下結果〉單步看結果。。。

procedure TForm1.Button1Click(Sender: TObject);
var
  s:WideString;
begin
  s:=StringOfChar(' ',1);
  ShowMessage(s);
  Edit1.Text:=s+'sss';
end;

------解决方案--------------------
這樣?

procedure TForm1.Button1Click(Sender: TObject);
var
  a:Widestring;
begin
  a:=VarToStrDef(a,'');
  ShowMessage(a);
  Edit1.Text:=a+'sss';
end;

------解决方案--------------------
可否?

procedure TForm1.Button1Click(Sender: TObject);
var
  a:Widestring;
begin
  begin
    a:='s';
    ShowMessage(StringReplace(a,'s','',[]));
    Edit1.Text:=a+'s';
  end;
end;

------解决方案--------------------
var
  s:string;
begin
  s := '';
  SetPram(StringToOleStr(s));
end;