程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi的字符及字符串[5] - 字符串與Windows API

Delphi的字符及字符串[5] - 字符串與Windows API

編輯:Delphi

Windows API 中的字符串對應這 Delphi 的 PChar(PAnsiChar); 在 API 中使用 Delphi 的字符串還 是比較靈活的.

先說賦值://賦值方法1: 給直接量
begin
 SetWindowText(Handle, '新標題');
end;
//賦值方法2: 定義它要的類型
var
 p: PChar;
begin
 p := '新標題';
 SetWindowText(Handle, p);
end;
//賦值方法3: 轉換成它要的類型
var
 str: string;
begin
 str := '新標題';
 SetWindowText(Handle, PChar(str));
end;
//賦值方法4: 用字符數組
var
 arr: array[0..255] of Char;
begin
 arr := '新標題';
 SetWindowText(Handle, arr);
end;
再說取值://取值方法1: 用字符數組(經常被稱作"緩沖區")
var
 arr: array[0..254] of Char;
begin
 GetWindowText(Handle, arr, 255);
 ShowMessage(arr); {Form1}
end;
//取值方法2: 使用 GetMem 給 PChar 分配內存
var
 p: PChar;
begin
 GetMem(p, 255); {分配內存}
 GetWindowText(Handle, p, 255);
 ShowMessage(p); {Form1}
 FreeMem(p);   {釋放內存}
end;
//取值方法3: 用 GlobalAlloc 分配全局內存(比 GetMem 慢)
var
 p: HGLOBAL;
begin
 p := GlobalAlloc(0, 255); {參數一給 0 或 GMEM_FIXED 表示分配的是固定內存}
 GetWindowText(Handle, PChar(p), 255);
 ShowMessage(PChar(p)); {Form1}
 GlobalFree(p);     {釋放內存}
end;
//取值方法4: 直接使用 string; 需要先 SetLength, 然後再去除空白:
var
 str: string;
begin
 SetLength(str, 255); {先設定 str 的長度}
 GetWindowText(Handle, PChar(str), 255);
 {但此時 str 的長度是 255 啊!}
 str := PChar(str); {這樣可以得到實際長度的字符串}
 ShowMessage(str); {Form1}
end;
定長字符串不是 #0 結束的, 和 API 不好兼容, 一般不用於 API 中. c

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