WideString 怎么转换成 PChar!(50分)

C

caidao

Unregistered / Unconfirmed
GUEST, unregistred user!
WideString 怎么转换成 PChar!
 
var
str:widestring;
pchar(str)
 
这样不行!
编译器警告:
Suspicious Typecast of WideString to PAnsiChar
 
我在6.0上刚试了一下, 是可以的
 
stuwei: PWideChar
在哪儿定义的?
 
xirumin: 我在Delphi7下,Pchar(str)就报错!
 
不是报错,是警告!
 
procedure TForm1.Button2Click(Sender: TObject);
var
s:wideString;
p:pchar;
begin
s:='1234';
p:=pchar(s);
p^:='A';
inc(p,1);
p^:=#0;
showmessage(s);
end;
 
是会警告,我还在琢磨怎么能去掉这个警告,在D5中没有警告
如果要简单的去掉,可以在菜单'Project-Option'中的Compiler Messages中
最后3项与unsafe有关的警告去掉就可以了,这些警告与.Net有关,一般情况下
没有用
 
看看有没有其它办法。
D5没有警告,D7有,说明Bland这样做应该是有道理的。
 
查看这一类设置 {$A+/-}
 
ss2000说的对,这些警告可以通过这种方法去掉
没有什么影响,只是为了让用户向,net过度,忘了在那里看的了
 
当然有道理,我不是说了吗,这些警告与.Net有关。
 
但这一次它警告的是正确的。
messagebox(handle, Pchar(msg), '',mb_ok) 出来,一长串字符它只显示前两个字符!
 
晕倒!!!!!!
只显示前两个字符和警告没有任何关系!!!!
回去看看书,把你的代码写全了!!!!!
 
SS2000: 可能是没有什么关系,但至少转换有问题嘛。


msg := Msg + chr(13) + chr(10) + '不能确定!' +
'出现这样的情况可能是该毛料的入仓单被取消!检查库存后重试。';
//MessageBox(handle, PChar(Msg), '警告', MB_OK);
MessageDlg(msg, mtWarning, [mbYes], 0);
代码就是这样!
 
再次晕倒!!!!!!
只显示前两个字符和警告和转换没有任何关系!!!!
回去看看书,把你的代码写全了!!!!!
Msg的初始值是什么?这也算把代码写全了?
 
顶部