delphi string转WideString的有关问题
delphi string转WideString的问题
需要用delphi调用vc写的dll中的一个函数,需要传递1个参数,该参数是WideString类型。
例如
SetPram(const prm:WideString);
如果在Delphi中传递空字符串SetPram('');就报错,说无效参数,空字符串中加个空格就没事,但是我的程序必须要传递一个空字符串,不能是空格,需要怎么做。我想应该是string类型的空字符串'',转成WideString不认造成的。
------解决方案--------------------
------解决方案--------------------
用PWideChar
------解决方案--------------------
不行?你測試了沒。。。SHOW出來看一下。。。
------解决方案--------------------
這個肯定不行,以widestring返回是一個空值,不是空格。。。
------解决方案--------------------
別急,先不要往自己的程序裡套,先把以下語句show出來看下結果?(主要看下edit1的text中顯示的sss前有沒有一個空格字符),這時再檢查你VC寫的DLL的這個widestring參數〈最好跟蹤一下代碼,必要時show出來看下結果〉單步看結果。。。
------解决方案--------------------
這樣?
------解决方案--------------------
可否?
------解决方案--------------------
var
s:string;
begin
s := '';
SetPram(StringToOleStr(s));
end;
需要用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
------解决方案--------------------
不行?你測試了沒。。。SHOW出來看一下。。。
procedure TForm1.Button1Click(Sender: TObject);
var
s:WideString;
begin
s:=StringOfChar(' ',1);
ShowMessage(s);
Edit1.Text:=s+'sss';
end;
------解决方案--------------------
這個肯定不行,以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;