Delphi之指標使用

2021-07-31 04:22:58 字數 4238 閱讀 9740

delphi之指標使用

string詳解

procedure tform1.button1click(sender: tobject);

var a,b: array[0..19] of char;

i: integer;

s, str: string;

begin

fillchar(a, sizeof(a), 0);

fillchar(b, sizeof(a), 0);

for i:= 0 to 9 do

a[i]:= chr($30+i);

showmessage(a); //'0123456789'

strcat(@a,'wertyui');

s:= strpas(@a[0]);

showmessage(s); //'0123456789wertyui'

strcopy(@b,@a);

strcopy(@a,'asdfghj');

showmessage(a); //'asdfghj'

showmessage(b); //'0123456789wertyui'

setlength(str,20);

strcopy(@str[1],@b);

showmessage(str); //'0123456789wertyui'

setlength(str,0);

// strmove()

end;

procedure tform1.btn1click(sender: tobject);

var str: string;

begin

str:= 'atrzxczxczxczxczxczxczxxczxczzxcxzvzxczczxczx';

showmessage( inttostr(integer(@str))+';'#$0d#$0a+ //1635712

inttostr(integer(@str[1]))+';'#$0d#$0a+ //2958704 字串首位址

inttostr(integer(@str[2]))); //2958705

showmessage(inttostr(sizeof(str))); //4 str變數是個指標

end;

procedure tform1.btn2click(sender: tobject);

const

tempstring: array[0..15] of char = 'this is a test.'#0;

var text: pchar;

begin

// text := @tempstring[0]; //字元陣列首位址

text := @tempstring; //字元陣列首位址

showmessage(inttostr(integer(@tempstring[0]))+';'+inttostr(integer(@tempstring)));

messagebox(0, text, 'test message', 0);

end;

procedure tform1.btn3click(sender: tobject);

var text1: array[0..14] of char;

text2: array[0..20] of char;

text3: pchar;

begin

text1 := 'this is a test'#0;

text2 := 'this is a test.';

messagebox(0, text1, 'test message 1', 0);

messagebox(0, text2, 'test message 2', 0);

text3:= pchar('aabbcc'#100#100#0#101);

showmessage(text3+';'+inttostr(length(text3)));

//8 pchar以#0結尾,但#0不計入pchar長度

end;

delphi 將string 轉為 array of ansichar

procedure tform1.btn1click(sender: tobject);

var ms: tmemorystream;

str: string;

arr, arr2: array of char;

p: pchar;

ilen: integer;

begin

new(p);

ms:= tmemorystream.create;

ms.loadfromfile('c:\users\administrator\desktop\新建文字文件.txt');

ilen:= ms.size;

setlength(str,ilen);

setlength(arr,ilen);

setlength(arr2,ilen);

ms.readbuffer(str[1],ilen);

movememory(@arr[0],@str[1],ilen);

p:= @arr[0];

strcopy(@arr2[0],p);

showmessage(str+ p);

end;

procedure tform1.btn2click(sender: tobject);

var ms: tmemorystream;

arr, arr2: array of char;

ilen: integer;

begin

ms:= tmemorystream.create;

ms.loadfromfile('c:\users\administrator\desktop\新建文字文件.txt');

ilen:= ms.size;

setlength(arr,ilen);

ms.readbuffer(arr[0],ilen);

setlength(arr2,ilen);

copymemory(@arr2[0],@arr[0],ilen);

showmessage('a');

end;

procedure tform1.btn3click(sender: tobject);

var ms: tmemorystream;

str: string;

arr: array of char;

ilen: integer;

begin

ms:= tmemorystream.create;

ms.loadfromfile('c:\users\administrator\desktop\新建文字文件.txt');

ilen:= ms.size;

setlength(str,ilen);

setlength(arr,ilen);

ms.readbuffer(str[1],ilen);

copymemory(@arr[0],@str[1],ilen); //@arr[0]時,成功

setlength(arr,50); //@arr時,失敗

showmessage(str);

end;

procedure tform1.btn4click(sender: tobject);

var ms: tmemorystream;

str,str2: string;

ilen: integer;

begin

str:= '0123456789';

ms:= tmemorystream.create;

ms.writebuffer(str[1],length(str));

ilen:= ms.size;

setlength(str2,ilen);

ms.position:= 0; //注意,從0開始(前邊用了writebuffer)

ms.readbuffer(str2[1],ilen);

showmessage(str2);

end;

Delphi之指標使用

以下內容分為八部分,分別是 一 型別指標的定義 二 無型別指標的定義 三 指標的解除引用 四 取位址 指標賦值 五 指標運算 六 動態記憶體分配 七 字元陣列的運算 八 函式指標 一 型別指標的定義。對於指向特定型別的指標,在c中是這樣定義的 int ptr char ptr 與之等價的object...

delphi 指標使用

指 針 指標的動態變數 1.定義指標型別 在turbo pascal中,指標變數中存放的某個儲存單元的位址,即指標變數指向某個儲存單元。乙個指標變數僅能指向某一種型別的儲存單元,這種資料型別是在指標型別的定義中確定的,稱為指標型別的基型別。指標型別定義如下 型別名 基型別名 例如 type q in...

DELPHI 指標使用

delphi裡自己管理記憶體的兩對函式 new dispose 和getmem freemem 大家都認為,c語言之所以強大,以及其自由性,很大部分體現在其靈活的指標運用上。因此,說指標是c語言的靈魂,一點都不為過。同時,這種說法也讓很多人 產生誤解,似乎只有c語言的指標才能算指標。basic不支援...