談談 Delphi 的類型與指標[2]

記憶體中的資料除了 0 便是 1, 你把它當作圖片、字元、數字等等, 那是你的事, 記憶體只認識 0 和 1.Win32 系統除了使用硬記憶體以外, 還可以從硬碟上開闢虛擬記憶體;因為 Win32 的記憶體位址範圍在 4 個 G 以內(0..232-1), 所以它最多能夠給一個應用程式分配 4G 的Runspace; 並且其中的 2G 有系統管理, 實際上程式只有 2G 的自主空間. 還記得有說 String 最大長度是 2G 嗎? 就是這個道理.有 4G 的記憶體, 就有 4G 個地址,

快速鍵設定控制項: THotKey [1]

運行:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;type TForm1 = class(TForm) HotKey1: THotKey; Memo1: TMemo; CheckBox1: TCheckBox; CheckBox2: TCheckBox;

關於十六進位轉十進位 – 回複 MaxCool 的問題

這不需要寫函數.//如果十六進位非字串, 無須轉換, 直接賦值即可var i: Integer;begin i := $FF; ShowMessage(IntToStr(i)); {255}end;//如果十六進位是字串, 用 StrToInt 即可var s: string; i: Integer;begin s := '$FF'; i := StrToInt(s); ShowMessage(IntToStr(i)); {255}end;//如果十六進位是字串, 但缺少 $ ,

WinAPI: SetLayeredWindowAttributes – 設定視窗的透明

這是來賓 Dolby 在 http://www.cnblogs.com/del/archive/2008/03/08/1081295.html#1096814詢問的問題.//聲明:SetLayeredWindowAttributes( Hwnd: THandle; {視窗控制代碼} crKey: COLORREF; {透明色} bAlpha: Byte; {Alpha 值} dwFlags: DWORD {LWA_COLORKEY(=1)表示使用透明色;

全域探色器

本例:此例回複 maxcool(我堅定的支援者與監督者, 離不開你呀!) 在http://www.cnblogs.com/del/archive/2008/03/09/1096874.html#1097203 提出的問題.全部代碼如下:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,

WinAPI: GetWindowRect、GetClientRect – 擷取視窗的外部與內部矩形

提示: 1、其實用 Delphi 內部同類函數很方便的, 但系統函數是全域的;2、使用 GetClientRect 時, 一般要 Windows.GetClientRect, 因為 TForm 的父類有同名函數.//聲明:{擷取視窗外部矩形(相對於螢幕)}GetWindowRect( hWnd: HWND; {視窗控制代碼} var lpRect: TRect {用於返回的矩形指標}): BOOL;{擷取視窗內部矩形}GetClientRect( hWnd: HWND;

WinApi: GetParent、SetParent、MoveWindow – 擷取、指定父視窗和移動視窗

提示: SetParent 應該 Windows.SetParent, 因為 TForm 的父類有同名方法.//聲明:{擷取父視窗控制代碼}GetParent(hWnd: HWND): HWND;{指定父視窗}SetParent( hWndChild: HWND; {子控制代碼} hWndNewParent: HWND {父控制代碼}): HWND; {成功返回原父視窗控制代碼; 失敗返回 0}{移動視窗}MoveWindow( hWnd: HWND;

WinAPI: GetCurrentThread、GetCurrentThreadId、GetCurrentProcess、GetCurrentProcessId

{返回當前線程的虛擬控制代碼}GetCurrentThread: THandle;{返回當前線程 ID}GetCurrentThreadId: DWORD;{返回當前進程的虛擬控制代碼}GetCurrentProcess: THandle;{返回當前進程 ID}GetCurrentProcessId: DWORD;提示:ID 是系統唯一的標識.所謂虛擬控制代碼, 就是該控制代碼只在調用進程的進程中有效, 也不能被繼承;如果用於其他進程需要用 DuplicateHandle

WinAPI: GetWindowThreadProcessId – 擷取指定視窗的進程 ID 或線程 ID

//聲明:GetWindowThreadProcessId( hWnd: HWND; {指定視窗控制代碼} lpdwProcessId: Pointer = nil {返回進程 ID 的指標}): DWORD; {返回線程 ID}//舉例:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics,

《Delphi 演算法與資料結構》簡介及下載

相比其他程式設計語言, Delphi 的名著可不算多呀; Julian Bucknall[巴克納爾(美)] 所著的《Delphi 演算法與資料結構》就是不可多得的一本!演算法與資料結構是早就該學得, 能有幸同時接近大師的思想, 太幸運了.目錄前 言致 謝第1章 什麼是演算法1. 1 什麼是演算法1. 2 演算法和平台1. 3 調試與測試1. 4 小結第2章 數組2. 1 數組2. 2 Delphi中的數群組類型2. 3 TList類和指標數組2. 4 磁碟數組2. 5 小結第3章 鏈表.

WinAPI: OpenProcess、GetExitCodeProcess、TerminateProcess (測試強制關閉 OICQ)

//聲明:{返回進程的控制代碼}OpenProcess( dwDesiredAccess: DWORD; {訪問選項} bInheritHandle: BOOL; {能否繼承; True 表示能用 CreateProcess 繼承控制代碼建立新進程} dwProcessId: DWORD {指定進程 ID}): THandle; {成功會返回進程控制代碼; 失敗返回 0}//dwDesiredAccess

《Delphi 演算法與資料結構》學習與感悟[2]: 資料對齊

為了加快硬體的訪問速度, 編譯器通常要使用"資料對齊", 譬如://下面結構中: SizeOf(TRec) = 6; 因為 b 在這裡也要佔 2 位元組.TRec = record a: Word; b: Byte; c: Word;end;//下面結構中: SizeOf(TRec) = 16; 這裡的 a 和 b 共佔了 8 個位元組.TRec = record a: Byte; b: Byte; c: Double;end;//下面結構中: SizeOf(TRec) = 8;

看看我最關心的動態庫中到底有多少函數 – gdi32.dll

擷取方法:運行: tdump.exe C:\windows\system32\gdi32.dll

《Delphi 演算法與資料結構》學習與感悟[3]: 擷取一個位元組中非空位的個數

一個位元組有 8 個位, 這些位可能是 0 也可能是 1; 現在要算出一個位元組中是 1 的位共有多少個.第一種方法是一個函數; 第二種方法笨了點, 是先把 256 種可能值給一個數組, 隨時調取.第一種方法雖然靈巧, 但不如第二種方法快(作者書中說: 在非特殊情況下, 一般要快到 10 倍左右); 第二種方法雖然快捷, 並且使用方便, 但要以 256 個位元組的數組空間為代價.unit Unit1;interfaceuses Windows, Messages, SysUtils,

《Delphi 演算法與資料結構》學習與感悟[4]: 關於 const

如果參數在函數中不可能修改, 一定要使用 const;不然, 編譯器就會:假定先修改, 先要備份; 使用前後要增減引用計數; 還要套上 try finally.指定了 const 就可以避免以上過程從而提高效率.測試:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(

《Delphi 演算法與資料結構》學習與感悟[5]: 定位一個字元位置時, Pos 函數為什麼不是最快的?

如果 Pos 函數的第一個參數是 Char 而非 String, 那麼編譯器也會先把 Char 轉換為 String;從記憶體結構到管理機制, String 遠比 Char 要複雜.因此, 面對這種情況(要定位的是 Char) Pos 還有最佳化的餘地; 最佳化後速度會提升 5 倍左右.測試:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

《Delphi 演算法與資料結構》學習與感悟[6]: 一個簡單的”單向鏈表”

unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure

《Delphi 演算法與資料結構》學習與感悟[7]: 鏈表與數組的異同

首先, 上一個例子, 用數組也可以實現, 並且更簡單:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender:

《Delphi 演算法與資料結構》學習與感悟[8]: 單向鏈表的添加、刪除與遍曆

本例:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; Button4:

《Delphi 演算法與資料結構》學習與感悟[9]: 迴圈鏈表

前面例子中, 鏈表的尾節點都再沒有連結其他節點; 如果讓尾節點再連結首節點, 不就是迴圈鏈表了嗎?本例:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure

總頁數: 61357 1 .... 4791 4792 4793 4794 4795 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.