您好,请教有关 String 转换问题,谢谢(20分)

  • 主题发起人 主题发起人 wjlsmail
  • 开始时间 开始时间
W

wjlsmail

Unregistered / Unconfirmed
GUEST, unregistred user!
您好,代码如下:
var
s : Pchar ;
begin
s := '1234' ;
ShowMessage(String(s)) ; // '1234'
ShowMessage(Pchar(S)); // '1234'
// ShowMessage(String(Integer(s))) ; // Integer(s) : 得到 s 的指针,然后Sting转换显示,出错
ShowMessage(IntToStr(Integer(s))) ; // Integer(s) : 得到 s 的指针,然后IntToStr显示, 正确
end;

我想请教:
String() 类型转换的结果是什么类型 ? 应该也是一种字符串,但为何与 IntToStr 不同 ?

 
类型(变量);这时强制转换,当然和IntToStr不同。
 
string()转换成一个string类性
 
PCHAR类型的变量首先应该分配空间的吧,怎么直接就用了?
 
指针是一个数据值型变量,怎么能直接用String呢
 
谢谢楼上两位 :)
ShowMessage(IntToStr(Integer(s))) ;
//这儿是将整型化的地址转换为 String ,用 IntToStr ,这儿得到的是 String ;

ShowMessage(String(Integer(s))) ;
//这句执行有错,也就是说:String() 类型转换没有起到将 Int 转换为 String 的作用,因为它执行出错 ;
但是,
s := '1234' ;
ShowMessage(String(s)) ; // '1234'
这儿又可以,也就是,用 String() 可以得到一种字符串类型,但这种类型与用 IntToStr得到
的字符串不同 。 您同意吗 ? 请问,String()转换的结果是怎样的一种字符串 ?

谢谢

52free : 您好,那样的确不对,但不是本贴的关键 . 以后使用 Pchar 时会注意
先 GetMem ,后再 StrCopy,再 FreeMem ,不破坏 Pchar指针 。谢谢您
 
指针是一个数据值型变量,怎么能直接用String呢 ?
-------------------------------------------------------
诸葛白痴 : 您好,为何对它不能 String() 类型转换 ? (指针已经整数化了)
 
String() 类型转换 不能将 Int 转换为 String。
int 佔4字節,string佔的字節數,要根據字符多少而定。
inttostr()內部要牽扯到分配內存,當然與String()不一樣。
 
哦,这样子 ......
ShowMessage(String(4)) ; 的确不行
谢谢您 ,
还有别的看法吗 ?
 
这是两个意义完全不同的函数,
String是用于类型强制转化的
参数可以是字符数组,PChar指针,
而IntToStr是将一个整数转化为字符串表达形式,是质的变化,
参数必须为整数,转化结果为这个整数的字符串表达,

对于String类型的变量,实际上是一个特殊的指针,指向一个特殊的结构,
他的大小只有4个字节
也不要试图引用这个指针,很不安全,
字符串使用了和动态数组类似的技术,也可以说是
动态数组使用了和字符串类似的技术,他们不同于一般的普通变量
不能作为无类型参数传递
 
谢谢您:),谢谢各位。
分不多,见谅
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
744
import
I
后退
顶部