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

Delphi的類型轉換(4)

編輯:Delphi

2、下標為0的字符串標識符存放的是字符串長度,字符型數組基本相當於字符串,但不能存放字符串長度。字符串可以用s:='a string'的形式賦值,但是字符型數組a[ ]不可直接用a:='array'的形式賦值,用此種形式會出現類型不匹配錯誤,可選用strpcopy函數賦值。

例4: 字符型數組s[ ]相當於字符串,但沒有存放字符串長度的位置。

{s[1]='n' s[2]='e' s[3]='w' s[4]=0;}
   {p-->'new'}
   var
s:array[1..10] of char;
p:pchar;
   begin
   {s:='new'+char(0); error}{錯誤}
   p:=@s[1];
   {p:=@s; is not correct}
   strpcopy(p,'new');
   label1.caption:=strpas(p);{new}
   label2.caption:=s;{new}
   {label3.caption:=intTostr(integer(s[0]));}{不會出現4, 下
超出錯誤}
   end;

例5:下標從0開始的字符數組s,s相當於@s[0]。

{ s[0]='n' s[1]='e' s[2]='w' s[3]=0;}{p-->'new'}
   var
s:array[1..10] of char;
p:pchar;
   begin
   {s:='new'+char(0); error}{錯誤}
  p:=s;
   {p:=@s[0] is also correct}
   strpcopy(p,'new');
   label1.caption:=strpas(p);{new}
   label2.caption:=s;{new}
   label3.caption:=s[0];{n}
end;

3、下標從0開始和從1開始的字符數組地址的表示方法也有細微不同:

例6:下標從1開始的數組a 與下標從0開始的數組b 的比較。

var
a:array[1..10]of char;
b:array[0..10]of char;
   {a:='1..10';}{type mismatch}
   {b:='0..10';}{type mismatch}
begin
   strpcopy( b, 'from 0 to 10'); {正確 因為b即是@b[0] }
   strpcopy(@b[0], 'from 0 to 10'); {正確 與上個表達式
果相同}
   strpcopy(@a[1], 'from 1 to 10'); {正確 }
   strpcopy( a, 'from 1 to 10'); {類型匹配錯誤 因為a即是a[0]}
end;

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