ansichar:標準的1位元組的ansi字元
widechar:2位元組的unicode字元
char:相當於widechar,但在delphi以後版本中相當於widechar.
注:乙個字元在長度上並不代表是乙個位元組,所以不能程式中對字元長度進行硬編碼,而應該使用sizeof函式。
字串是代表一組字元的變數型別,每一種語言都有自己的字串型別的儲存和使用方法。
pascal型別有下列幾種不同的字串型別來滿足程式的要求:
ansistring:這是pascal預設的字串型別,它由ansicahr字元組成,其長度沒有限制,與null結束的字串相容
特點:1:動態分配的並有自動**功能
2:總是以null字元結束
3:複製字串因為僅僅是複製了指標而不是複製實際的字串而變得非常快
4:delphi記憶體管理使用了copy-on-write技術,乙個字串要等到修改結束,才釋放乙個引用並分配乙個物理字串
5:第一次宣告ansistring時,它是沒有長度的,因此在字串中就沒有為字元分配空間。為了對字元
串分配空間,用一行字母或另乙個字串對它進行賦值,或者用setlength()過程
6:能像陣列一樣對字串進行索引
7:sizeof返回值是定義的長度加1,因為定長字串會多出乙個首位元組來記憶字串的實際長度。
shortstring:向後相容,長度是255的字元
widestring:功能上類似於ansistring,但它是由widechar字元組成
widestring和ansistring的不同主要在三個方面
1:widestring由widechar字元組成,而不是由ansichar字元組成的,它們跟unicode字串相容
2:widestring用sysallocstrlen() api函式進行分配,它們跟ole的bstr字串相相容
3:widestring沒有引用計數,所以將乙個widestring字串賦值給另乙個widestring字串時,就
需要從記憶體中的乙個位置複製到另乙個位置。這使得 widestring在速度和記憶體的利用上不如ansistring有效
pchar:指向null結束的char字串的指標,類似於c的char * 或l p s t r型別。
特點:與ansistring和widestring型別不同,pchar的記憶體不是由object pascal自動產生和管理的,要用object pascal的記憶體管理函式來為
pchar所指向的記憶體進行分配。 pchar字串的理論最大長度是4gb
記憶體分配函式 記憶體釋放函式
allocmem() freemem()
globalalloc() globalfree()
getmem() freemem()
new() dispose()
stralloc() strdispose()
strnew() strdispose()
virtualalloc() virtualfree()
pansichar:指向null結束的ansichar字串的指標。
pwidechar:指向null結束的widechar字串的指標。
d2009以上:char-->widechar string-->unicodestring
d2009以下:char-->char string-->ansistring
Delphi 字串操作
常忘記,在此做筆記。這幾個函式都包含在strutils中,所以需要uses strutils 假設字串是 dstr delphi is the best 那麼 leftstr dstr,5 delph midstr dstr,6,7 i is th rightstr dstr,6 e best fu...
Delphi字串處理
悲催啊,使用了這麼久的delphi,還是沒有理解字串。今天看了一篇文章稍有理解。1.段字串shortstring。短字串的管理師這樣的,類似陣列 0處儲存字串的長度,從1處開始了內容,shortstring的總長度是256,因此,實際的內容長度只能為255,並且內容結束沒有結束字元,即不是以 0結尾...
Delphi字串 DLL傳遞字串方式
由於是半路出家,寫起 來比較隨性。每次在寫dll傳遞字串時需要費很大的勁。在這裡來乙個demo演示一下 dll library dlltest1 uses sysutils,classes procedure fun1 p1 pchar var p2 pchar stdcall var str st...