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不支援...