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

我倒是要晕了哟。Msg就是一个简单的字符串,
MessageBox(handle, PChar(Msg), '警告', MB_OK);
MessageDlg(msg, mtWarning, [mbYes], 0);
我转换Msg的目的也仅仅是MessageBox必须要Pchar.
用MessageBox弹出的对话框只有前两个字符,用messagedlg弹出对话框一点问题都没有!

是你晕,还是我晕?
 
PChar(string(Msg))
 
无话可说
 
我是笨,要是不笨,就不会问问题,
请问你又有多聪明?聪明得无话可说?!
嘿嘿。很多人都是这样无自知之明。没办法。
 
是呀,我没有自知之明,居然不知道我不是一个好老师,
碰到笨学生就不耐烦了,就没辙了,呵呵,对于七窍开了
六窍的人,没办法。
 
都不用这样说人吧
 
MessageBox的用法没有人不知道,没有人没用过,全部都用PChar,可caidao
居然说有问题,你们说该如何说?!
 
我只是定义一个WideString,然后转化成PChar。
嘿嘿。是的,确实一窍不开。

我记你好象问过这样一个问题,“上百万记录的表,Count(*),要很长时间,有什么办法?”
用你教我的话,回去看书!
看什么书?当然是SQL Server的书?
看书上什么内容?我当然还可以再教你,sp_table_validation,当然sp_table_validation
可能并不比Count(*)快多少,因为...再用上你教我的“回去看书”!
唉,不知道在你发问的贴子上出现这样的话,你作何感想。

没有把别人的问题搞清楚,就在哪儿左一个晕,右一倒,前一笨,后一个还是笨。唉!惆怅!
作人嘛:还是低调一点嘛,比你高明的人太多。
    诚恳一下嘛,你觉得这个问题弱智到不值得你回答,你可以安静的走开,少说两
句没有当你不会打字。
另:你提上面那个问题的时候有没有“回去看书?!”
 
算了,不跟你争吵了,那样没什么意思。
WideString转换成PChar确实就用PChar就可以了,你说转化有问题,
确实是转化没有问题。至于你说的现象,确实也是存在的,因为我
相信你不会骗人吧,那样就真的没意思了。
问题的关键是WideString转化成PChar后,你用来做什么?你用
MessageBox校验转化结果是否正确是错误的。由于WideString是
双字节的字符串,用两个字节表示一个字符,如果是汉字,当然没有
问题,如果是英文,就会用前一个字节表示英文字符,后一个字节
就是#0,如果你直接转化成PChar,用MessageBox显示,如果里面有
英文,那英文后面的就不会被显示了,但这并不是说转换有问题,相反
正说明了转换是正确的,所以,你用PChar转换WideString后,用
MessageBox检查是否正确是错误的!
你可以定义一个String字符串,先用string:=widestring,
在用MessageBox(PChar(string)...)就可以显示正确的信息。
所以PChar是可以正确的把WideString转换成PChar的,这是毫无疑问的,
只是转换后,你用来做什么?! 因为里面可能有#0,所以就不能用
MessageBox这样的函数来校验器内容了!!
到此为止!
 
procedure TForm1.Button1Click(Sender: TObject);
var
s:WideString;
begin
S:='dfgdfgdfg';
application.MessageBox(pchar(string(s)), 'Look', mb_OK);//绝对正确
//application.MessageBox(pchar(s), 'Look', mb_OK);//绝对不正确
end;
 
对了嘛!
 
多人接受答案了。
 
顶部