关于字符串的使用,请帮忙一下 ( 积分: 11 )

  • 主题发起人 主题发起人 初学者1号
  • 开始时间 开始时间

初学者1号

Unregistered / Unconfirmed
GUEST, unregistred user!
var
m:pchar;
begin
m:='333333333';
showMessage(m[1]);
m[1]:='4';
showMessage(m);
end;
这样会产生错误,为什么?如何修改?谢谢您
 
var
m:pchar;
begin
m:='333333333';
showMessage(m[1]);
m[1]:='4';
showMessage(m);
end;
这样会产生错误,为什么?如何修改?谢谢您
 
你的意思是想让第二个showmessage显示433333333吧
 
把m:pchar改為m:stirng
就可以了。
 
如果你是想让第二个showmessage显示433333333的话,大忙人的方法正确
 
一定要用pchar
 
var
m:pchar;
begin
getmem(m,10);
try
StrCopy(m,'333333333');
showMessage(m[0]);
m[1]:='4';
showMessage(m);
finally
freemem(m);
end
end;
 
那你只有弄一个string类型的临时变量给这个Pchar赋值了
 
呵呵,帮你改一下,将就用用;
var
m:pchar;
S:STRING;
begin
m:='333333333';
s:= m;
showMessage(m[1]);
s[1]:='4';
m := pchar(s);
showMessage(m);
end;
 
谢谢大家的热情帮助。
我的本意是这样的,我用C++做了个DLL,在DELPHI调用。
函数模型是:s:function(s:pChar):pChar;
主要是C++处理字符串比较方便,在C++里,函数声明为char* alterString(char *s)
如果直接用pChar传过去的话,提示:内存不能访问,确实不知道原因。现在临时的解决方法是:定义一个数组m:array[0..100] of char.然后这样调用:s(m);这样也可以得到正确结果。
望有更好方法的人提出来,谢谢您
 
showMessage(m[1]);
m[1]:='4';
m[0]是第一个3
但m[1]不是第二个3
因m为指针,要把指针下移下一个char的长度
在我印象中好像可以用Inc(m);
 
多人接受答案了。
 
后退
顶部