字符串问题?

78product 2000-11-08 02:18:00
请教两个小问题~~~~~

1、pchar与string有什么区别啊?老是出错……能转换吗?

2、有没有象vb这样的replace函数啊?
...全文
197 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
78product 2000-11-08
  • 打赏
  • 举报
回复
图片问题我已经解决,用TGraphi

谢谢诸位的帮助
nhgw 2000-11-08
  • 打赏
  • 举报
回复
1.
pchar是为了兼容C字符串,调用WINAPI而用。这种字符串以#0结尾。相当于指针,在定义后没有分配内存。不能没有赋初值就使用。如:
var
str1:array[0..10] of char;
pstr1:pchar;
begin
pstr1:=str1; //先分配内存,再操作,相当于操作str1。
pstr1:='0987654321'; //这种也是分配内存。
pstr1:=pchar(allocmem(10)); //这种也是分配内存。而且,必须释放 freemem(pstr1);

string是传统pascal字符串,这种字符串在第0个字节存放长度。这种字符串定义时已经分配空间。

转换:
var
str1:string;
pchr1:pchar;
...
str1:=string(pchr1);
pchr1:=pchar(str1);

我以前也不太了解它们的区别,前几天买了一本《delphi5开发指南》,上面有比较详细的解释。你可以找这本书看一下,不一定要买,讲字符串的只有几页。

2
好象没有,可以自己编一个函数,来替换字符串中的某些字符。
如:
var
str1:string;
tmp:char;
find,replace:char;
i:integer;
begin
str1:='0984654321'; //赋值,实际函数中,这些是函数的参数
find:='4';
replcae:='a';

for i:=1 to length(str1) do //替换单个字符过程
if find=str1[i] then str1[i]=replcae;

end;
这种方法只可以替换单个字符,如想替换字符串也不难。
78product 2000-11-08
  • 打赏
  • 举报
回复
Firing_Sky,不好意思,我给分了才看见你的答案。


另:还有一个问题也想请教一下,如何将access数据库中的图片输出成一个文件呢,如xx.bmp
Firing_Sky 2000-11-08
  • 打赏
  • 举报
回复
PChar是一个指针,指向一个0结尾的字符串,它是Windows API中常用的字符串
String是Borland自定义的字符串,和PChar不同,它的最前面标示出了字符串的长度,否棉才是字符串的内容,easypaper说的不对,从D3开始Delphi就能超过256字节的字符串了

PChar转String
String:=StrPas(PChar);

String转PChar
PChar:=PChar(String);
老魏2006 2000-11-08
  • 打赏
  • 举报
回复
pchar是C/C++使用的字符串,他的长度没有限制,是在一个字符串的尾部,加上一个0表示字符串的结束。
string是pascal的字符串,它的最大长度,好像是256,印象里,是在字符串前面加了一个字节来表示字符串长度
AnsiString 是一个类,功能很多,它不是简单的字符串。

可以这样转换:
str : string;
str2 : AnsiString;
pchar(str)//转换成pchar
str2.c_str();

因为windows是用C写的,所以api函数都是使用pchar,即c/c++字符串。

replase可以用delete + insert代替
AnsiString str = "dfds fdas fasdf das fdas fdasf as";
str.Delete(2, 5);
str.Insert("ddsafdsaf", 2);
kkk2000 2000-11-08
  • 打赏
  • 举报
回复
当然有区别,Pchar是以null结尾的,像这样的类型还有其它的。而Pascal的String在默认情况下被认为是AnsiString.
如果是把PChar转换为String,直接赋值就可以了如:Str1:=MyPchar;//MyPchar为Pchar类型.
相反用强制类型转换。String到PChar类型:PChar(Str1);//将str1转换为PChar.

5,930

社区成员

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

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