请教:PChar支持哪些操作!

gg961681 2004-12-29 09:29:15
请教:PChar支持哪些操作!
...全文
165 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gg961681 2005-01-04
  • 打赏
  • 举报
回复
哈哈,今天比较急,感觉能解决问题了,先揭贴了。再不结,就不好意思了!
beyondtkl 2005-01-04
  • 打赏
  • 举报
回复
delphi 好像不支持 重载操作符
所以用函数代替。。
beyondtkl 2005-01-04
  • 打赏
  • 举报
回复
能不能在不用string的情况下,实现pchar的相加呢?

当然可以了 比如
function Add(var pOld:PChar; const pAdd:PChar):PChar;
var
i,j:Integer;
pTmp, pTmp2: PChar;
begin
// 略去各种判断
i := Length(pOld);
j := Length(pAdd);
GetMem(pTmp, i + j + 1);
StrCopy(pTmp, pOld);
pTmp2 = pTmp;
Inc(pTmp, i);
StrCopy(pTmp2, pAdd); // 好像不支持 StrCopy(pTmp+i, pAdd);
FreeMem(pOld);
pOld := pTmp;
Result := pOld;
end;

随手写 没什么优化之类的了。

1. 它是一个指针 具有指针的基本性质 转换 移动等
2. 它是一个字符串指针 具有字符串的特性

^_^ 也刚好是 概念上的继承 或者 说 组合。。
boy_mei 2005-01-04
  • 打赏
  • 举报
回复
function StrECopy(Dest:PChar; const Source: PChar): PChar; $[SysUtils.pas
功能 返回将指针字符串Source复制到指针字符串Dest中的结尾
说明 可以连接指针字符串
参考
例子
///////Begin StrECopy
procedure TForm1.Button1Click(Sender: TObject);
var
vBuffer: array[0..255] of Char;
begin
StrECopy(StrECopy(vBuffer, PChar(Edit1.Text)), PChar(Edit2.Text));
Edit3.Text := vBuffer;
end;
///////End StrECopy
gg961681 2004-12-31
  • 打赏
  • 举报
回复
能不能在不用string的情况下,实现pchar的相加呢?
ly_liuyang 2004-12-30
  • 打赏
  • 举报
回复
N多啦,看Help就知道
API都只能是PCHAR的

PCHAR可以与String相互Convert的

http://lysoft.7u7.net
caiso 2004-12-30
  • 打赏
  • 举报
回复
顶一下
xjwy 2004-12-30
  • 打赏
  • 举报
回复
windows系统都是以空字符为结束符号,而DELPHI的PCHAR也是以空0字符为结束符号
所以在调用API函数时,都用PCHAR来做强制转换,

其实PCHAR可以理解为一个空的无类型的指针,有点像 array of char 或者 string
但是你开始的时候要初始化这个变量,
p:Pchar;
buf: array[0..9]of char;

new(p);
buf:='1234567890';
p:=buf;

Kevin_Lmx 2004-12-30
  • 打赏
  • 举报
回复
不能直接相加,需要转为字符串后相加
gg961681 2004-12-30
  • 打赏
  • 举报
回复
string可以相加,那pchar呢?
solokey 2004-12-29
  • 打赏
  • 举报
回复
很多函数,API,不能用string,都用PChar。
ahjoe 2004-12-29
  • 打赏
  • 举报
回复
太多了!!!

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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