string 到 pchar 的转换函数

gsoft 2000-07-14 03:25:00
各位大虾:
我有个小问题
i 是一个integer;我想在提示框出现后在上面显示我的记录数,我下面的写法是不可以的提示是[Error] Unit1.pas(102): Incompatible types: 'String' and 'PChar'
因此需要一个string 到 pchar 的转换函数,我只找到了strpas,这个正和我的意思相反

application.messagebox('已生成'+inttostr(i)+'记录','记录退出提示',MB_ICONINFORMATION+MB_OK);

email:ccgkmail@263.net
...全文
405 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hank 2000-07-17
  • 打赏
  • 举报
回复
最简单的办法:
Application.Messagebox(PChar('已生成'+IntToStr(i)+'记录'),'记录退出提示',MB_ICONINFORMATION+MB_OK);
IAmKylix 2000-07-17
  • 打赏
  • 举报
回复
这家伙不给分。
Michaelyfj 2000-07-16
  • 打赏
  • 举报
回复
用函数strpcopy即可。你试一试!
pjy 2000-07-15
  • 打赏
  • 举报
回复
谢谢JGTM2000,讲的很详细!
JGTM2000 2000-07-15
  • 打赏
  • 举报
回复
不好意思更正一下,Application.MessageBox的前两个参数是PChar类型的,LaoZheng的答案是正确的。不过一般常用ShowMessage,MessageDlg等函数显示提示信息,如:MessageDlg('已生成'+inttostr(i)+'记录',mtInformation,[mbOK],0);
在Delphi中,常量字符串可用于PChar和Wide/AnsiString(即缺省{$H+}情况下的string),string类型字符串(其变量其实是个指针)内存布局同PChar相同,但要用于PChar时需做强制类型转换,array [0..len-1] of char可用于PChar和string。PChar可用于string。
LaoZheng 2000-07-15
  • 打赏
  • 举报
回复
application.messagebox(PCHAR('已生成'+inttostr(i)+'记录'),'记录退出提
示',MB_ICONINFORMATION+MB_OK);

给分

IAmKylix 2000-07-15
  • 打赏
  • 举报
回复
补充一点:
如果 Str='' 则PChar(Str)=nil,
这样可能在调用时引起内存访问错误,须加判断,或改用array[0..X] of PChar
JGTM2000 2000-07-14
  • 打赏
  • 举报
回复
在补充个小窍门,想简单的显示什么东西而不担心她的类型,可以将其强制转换成Variant,如ShowMessage(Variant(Now))等等。另外一般Delphi封装的方便的函数接受的都是自己的string类型(当然PChar可以直接当string用),所以像Application.MessageBox这样的含书都是接受string的,不用费心转换的。一般只有直接的调用API才会用到PChar。
JGTM2000 2000-07-14
  • 打赏
  • 举报
回复
事实上,Delphi中的string类型(缺省情况下等价于AnsiString类型,参考H编译指示)在内存中的布局是和PChar兼容的,因此对于需要PChar类型的参数的地方仅需要使用强制类型转换的语法即可通过编译器的类型检查,即:PChar(str)。同样,PChar类型也是和string兼容的,又因为在Windows编程中PChar非常的常见,因此对于string类型的参数,根本就不用任何强制转换的过程,也就是说PChar类型直接可以作为string类型使用。不过在COM编程时有可能会用到Unicode字串类型(即WideString),Delphi内部直接支持使用强制类型转换的语法对AnsiString和WideString进行转换,不过这时候若普通字串是一个PChar,则必须写成string(PChar)的形式,即WideString(string(PChar)),否则转换将出错。
meijg 2000-07-14
  • 打赏
  • 举报
回复
pchar to string: string(pchar);
string to pchar: pchar (string);
su 2000-07-14
  • 打赏
  • 举报
回复
pchar()转换
zsr 2000-07-14
  • 打赏
  • 举报
回复
直接用Pchar转换。
华南虎哥 2000-07-14
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
str:string;
begin
i:=100;
str:='已生成'+inttostr(i)+'记录';
application.messagebox(pchar(str),'记录退出提示',MB_ICONINFORMATION+MB_OK);
end;

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧