程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi的類型轉換(3)

Delphi的類型轉換(3)

編輯:Delphi

三、字符串string 字符數組與指向字符串的指針pchar的區別與聯系

這3者的基本概念相同,但有一些非常細微的差別,在編程時稍不注意就會出錯,需高度重視。

1、使用指向字符串的指針,如果不是以0結尾,運行時就會出現錯誤。為了避免這種錯誤,需要在字符串結尾人工加入0 即char(0),或用strpcopy函數在字符串結尾自動加0。

例1: 指向字符串的指針,如果不是以0結尾,運行時會出現錯誤:

{s[0]=3 s[1]='n' s[2]='e' s[3]='w'}
   var
   s:string;
p:pchar;
   begin
   s:='new';
  label1.caption:=s; {new}
  label2.caption:=intTostr(integer(s[0]));{3是字符串的長度}
   p:=@s[1];{不是以0結尾,莫用pchar型指針}
   label3.caption:=strpas(p); {運行時出現錯誤}
   end;

例2:在字符串結尾人工加入0即char(0),可使用指向字符串的指針。

{s[0]=4 s[1]='n' s[2]='e' s[3]='w' s[4]=0;}
   {p-->'new'}
   var
s:string;
p:pchar;
   begin
   p:=@s[1];
   s:='new'+char(0); {以0結尾,可用pchar型指針}
   label1.caption:=strpas(p); {new}
   label2.caption:=s; {new}
    label3.caption:=intTostr(integer(s[0])); {4是字符串長度  end;

例3: 用strpcopy函數賦值會在字符串s結尾自動加0。

{s[0]=4 s[1]='n' s[2]='e' s[3]='w' s[4]=0;}
   {p-->'new'}
   var
s:string;
p:pchar;
   begin
   p:=@s[1];
  strpcopy(p,'new');{strpcopy函數在字符串結尾自動加0}
   label1.caption:=strpas(p);{new}
   label2.caption:=s;{new}
   label3.caption:=intTostr(integer(s[0]));{4}
   end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved