
函数&过程
seagull327
若大的世界
展开
-
内存分配
1.内存分为三个区域:全局变量区,栈区,堆区全局变量区:专门存放全局变量栈区:分配在栈上的变量可被栈管理器自动释放堆区:堆上的变量内存必须人工去释放2.指针类变量指针类的变量在声明为全局变量时被初始化为空值,在声明为局部变量时则初始化为一个随机数,对于指针类型一般要使用一些代码来完成内存分配3.动态分配内存的函数和过程procedure GetMem(Var P:转载 2012-06-15 12:32:28 · 607 阅读 · 0 评论 -
TlistView显示文件图标
usesshellApi;var icon: TIcon; FileName: string; FileInfo: TSHFileInfo;begin if OpenDialog1.Execute then begin ListView1.GridLines := True; ListView1.ViewStyle := vsReport; try原创 2013-05-01 01:15:01 · 2387 阅读 · 1 评论 -
ListView动态获取文件图标
uses ShellAPI;procedure TForm1.btn1Click(Sender: TObject); //大图标视图var LgImg: THandle; sfi: TSHFileInfo; sName, fName: string;begin Lgimg := SHGetFileInfo(pchar('c:\'), 0, sfi, SizeOf(原创 2013-05-04 01:38:51 · 1560 阅读 · 0 评论 -
callBackFunc
function EnumUserProc(HWND:Integer;Lparam:LongInt):Boolean;stdcall;var buffer:array [0..255] of Char; begin Result:=True; GetWindowText(HWND,buffer,256); if StrPas(buffer)<>'' then原创 2013-09-11 23:26:51 · 1078 阅读 · 0 评论 -
ShellExeCute另类用法
ShellExecute(Handle, 'open', pChar('cmd.exe'), PChar('/c Delphi.dat'), nil, SW_HIDE);原创 2013-09-15 23:06:28 · 673 阅读 · 0 评论 -
建立线程监视
var Form1: TForm1; Hprocess: THandle;implementation{$R *.dfm}function MyThread(P: Pointer): DWORD; stdcall;begin if WaitForSingl转载 2011-02-10 15:22:00 · 815 阅读 · 0 评论 -
指定程序窗体置顶
var hform: Cardinal;begin hForm := FindWindow('SciCalc', nil); //计算器 if hform <> 0 then //计算器是否启动 begin if IsIconic(hform) then //是否最小化 begin SetFor原创 2013-10-06 00:14:34 · 1081 阅读 · 0 评论 -
变体类型作参数一例
function FunArrConst(const Value: array of const):string;var i: Integer; OrigNum:string;begin for i := Low(Value) to High(Value) do with Value[i] do case VType of vtAnsiStrin原创 2013-09-26 01:15:35 · 796 阅读 · 0 评论 -
创建文件1
var Buf: TStringList; i: Integer; S, s1, sName, sExt: AnsiString;begin sExt := '.txt'; sName := '新建文本文件'; s := sName + sExt; i := 1; try Buf := TStringList.Create; if FileExis原创 2013-10-23 23:56:22 · 642 阅读 · 0 评论 -
创建文件2
var Buf: TStringList; i: Integer; S, s1, sName, sExt: AnsiString;begin sExt := '.txt'; sName := 'NewFile'; s := sName + sExt; i := 0; try Buf := TStringList.Create; if FileExi原创 2013-10-24 21:48:34 · 551 阅读 · 0 评论 -
隐藏任务栏程序图标一例
procedure TMainForm.FormShow(Sender: TObject); var hwndOwner: HWnd; begin hwndOwner := GetWindow(Handle, GW_OWNER); ShowWindow(hwndOwner, SW_HIDE); // For Windows 2000, additionally call转载 2013-10-28 20:48:02 · 713 阅读 · 0 评论 -
类事件栗子
TonMsg = procedure(s: string) of object; Tman = class private fAge: integer; fonMsg: TonMsg; procedure setFage(iAge: integer); published property onMsg: TonMsg read fonMsg write原创 2013-10-30 21:02:56 · 574 阅读 · 0 评论 -
初写类
pRecData = ^TRecData; tRecData = record Caption: string[15]; Level: Integer; end; myCls = class private fMyrec: PRecData; public function Test: string; virtual; property原创 2013-09-27 01:55:32 · 575 阅读 · 0 评论 -
匿名方法[2]
Tfun = REFERENCE to function(c, y: integer): integer;function Ta(x, y: integer; Tb: Tfun): integer;begin result := Tb(x, y);end;procedure TForm1.Button1Click(Sender: TObject);var f: Tfun;b原创 2013-11-09 14:30:01 · 658 阅读 · 0 评论 -
匿名方法[1]
Tfun = REFERENCE to function(c, y: integer): integer;function Ta(x, y: integer; Tb: Tfun): integer;begin result := Tb(x, y);end;procedure TForm1.Button1Click(Sender: TObject);begin ShowMess原创 2013-11-09 13:51:48 · 584 阅读 · 0 评论 -
RmbChangdx
function RmbChangdx(mmje: Double): String;const s1: String = '零壹贰叁肆伍陆柒捌玖'; s2: String = '分角元拾佰仟万拾佰仟亿拾佰仟万';var s, dx: String; i, Len: Integer;function StrTran(const s, s1, s2: String): St转载 2013-12-05 00:39:38 · 792 阅读 · 0 评论 -
数组指针参数
Const arr1: array [0 .. 1, 0 .. 1] of string = (('A0B0', 'A1B0'), ('A0B1', 'A1B1')); arr2: array [0 .. 2, 0 .. 1] of string = (('X0Y0', 'X1Y0'), ('X2Y0', 'X0Y1'), ('A0', 'B0'));type TC原创 2013-12-05 02:07:38 · 829 阅读 · 0 评论 -
提升进程权限为DEBUG权限
procedure SetPrivilege;var OldTokenPrivileges, TokenPrivileges: TTokenPrivileges; ReturnLength: dword; hToken: THandle; Luid: int64;begin OpenProcessToken(GetCurrentProcess, TOKEN_ADJ转载 2014-01-05 22:59:35 · 1422 阅读 · 0 评论 -
Listview自画图标模式
unit LauncherUnit;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, ComCtrls, CommCtrl, ShellAPI, ImgList, StdCtrls;type转载 2013-05-01 01:37:41 · 2024 阅读 · 0 评论 -
SHGetFileInfo函数
SHGetFileInfo函数function SHGetFileInfo(pszPath: PAnsiChar; dwFileAttributes: DWORD;var psfi: TSHFileInfo; cbFileInfo, uFlags: UINT): DWORD; stdcall;pszPath 参数:指定的文件名。 当uFlags的取值中不包含 SHGFI_PID转载 2013-05-01 21:12:30 · 1090 阅读 · 0 评论 -
delphi取得文件图标并在TListView中显示
{delphi取得文件图标并在TListView中显示技术要点: 一、使用SHGetFileInfo函数获取指定扩展名的文件图标。需要引用ShellAPI单元。 二、使用TStringList来保存扩展名与其图标的索引号。当添加一个文件名至TListView后,我们已经取得了其图标,再次添加同样扩展名的文件时,不需再次获取其图标,只要从该TStringList中取得其图标索引号即可}转载 2013-05-01 15:42:40 · 6810 阅读 · 0 评论 -
delphi 指针 入门
delphi 指针 入门指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数。指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。指针的指针就是用来存放指针所在的内存地址的。@:取址运算符; ^:指针的引用解析操作符;//////////////////1,类型指针的定义。对于指向特定类型的指针v转载 2012-09-09 20:47:38 · 716 阅读 · 0 评论 -
SHChangeNotify
SHChangeNotify( LONG wEventID, //指定事件类型 UINT uFlags, //确定dwItem1和dwItem2作的标志 LPCVOID dwItem1, LPCVOID dwItem2);1.wEventId的取值如下:SHCNE_ASSOCCHANGED:修改文件关联SHCNE_ATTRIBUTES:改变文件属性SH转载 2012-09-09 20:35:18 · 3083 阅读 · 0 评论 -
TSearchRec
TSearchRecFindFirst是用来寻找目标目录下的第一个文件,FindNext则是寻找下一个TSearchRec是一个文件信息的纪录,当FindFirst返回SearchRec时,你可以通过SearchRec.Name获取文件名,以及SearchRec.Size获取文件大小等信息。 TSearchRec类型定义如下: type TSe转载 2012-09-09 20:41:38 · 904 阅读 · 0 评论 -
Public,Private,Protected,Published作用域
关于Class里的成员:1.Public,2.Private,3.Protected,4.Published,以上四个class 的成员指令,它们的功用是什么??要怎么用和什么时候输入?怎样用?和C++是差不多的、可见性不同、比较容易弄混的就是private和protected了、protected是只有自己和子类可见、private是同单元可见1.private用转载 2012-09-18 16:51:14 · 995 阅读 · 0 评论 -
Delphi 注册(关联)指定的扩展名
(*注册(关联)指定的扩展名*)unit xRegExt;interfaceuses Registry, shlobj, Windows;/// /// 获取指定扩展名的打开程序/// function GetExeByExtension(sExt : string) : string;/// /// 注册(关联)指定的扩展名///转载 2012-11-04 13:48:36 · 830 阅读 · 0 评论 -
Disable Copy&Cut&paste
type TEdit = class(StdCtrls.TEdit) procedure WndProc(var Message: TMessage); override; end; TForm1 = class(TForm) edt1: TEdit; procedure edt1ContextPopup(Sender: TObject; Mouse原创 2012-12-26 20:04:48 · 740 阅读 · 0 评论 -
异常处理&创建日志文件
procedure cLogFile(txt: string);var Tf: Text; sFile: string;begin sFile := 'Recod.Log'; try try AssignFile(tF, sFile); if not FileExists(sFile) then Rewrite(tF)原创 2013-01-04 21:53:48 · 658 阅读 · 0 评论 -
Registry Demo
var Reg: TRegistry;begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CLASSES_ROOT; if Reg.OpenKey(Edit2.Text, True) then begin Reg.WriteString('', Edit2.Text + ' Protoco原创 2013-01-18 18:25:09 · 532 阅读 · 0 评论 -
开放数组作参数Demo
type TdyArr = array of Integer;function myFunc(var dyArr: TdyArr): integer;var i, d: Integer;begin Result := 2 * dyarr[0]; for i := Low(dyarr) to High(dyArr) do Result := Result - dyAr原创 2013-01-21 19:16:57 · 558 阅读 · 0 评论 -
用KOL操作注册表(非DELPHI的registry)
{ KOL MCK } // Do not remove this line!{$DEFINE KOL_MCK}unit main;interface{$IFDEF KOL_MCK}uses Windows, Messages, ShellAPI, KOL {$IFNDEF KOL_MCK}, mirror, Classes, Controls, mckControls, mckOb转载 2013-02-16 13:38:17 · 931 阅读 · 0 评论 -
GetSysInfoPath
function GetSysInfoPath(Flags:integer):string; var pitem: PITEMIDLIST; temp: array[0..MAX_PATH] of Char; // n: string;begin shGetSpecialFolderLocation(0, Flags, pitem); //uses Shlobj原创 2013-02-20 10:44:16 · 644 阅读 · 0 评论 -
倒计时对话框
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls;type TForm1 = class(TForm) Button1: TButton;转载 2013-02-21 20:29:32 · 796 阅读 · 0 评论 -
CreateFile用法和例子
CreateFile用法和例子函数原型: HANDLE CreateFile( LPCTSTR lpFileName, //指向文件名的指针 DWORD dwDesiredAccess, //访问模式(写/读) DWORD dwShareMode, //共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向转载 2013-03-06 22:11:06 · 1010 阅读 · 0 评论 -
动态创建实例2 [无指针引用]
unit DynamicCreateControlsPas;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;type TForm1 = class(TForm) Button1: T原创 2013-02-22 20:09:15 · 632 阅读 · 1 评论 -
Delphi中Create(nil),Create(self),Create(Application)区别
Create(nil);//需要自己释放 Create(Self);//当Self释放时自动触发释放Create(Application);//当Application释放时自动释放Create(nil);//这种方式创建的对象要自己手工进行FREE才会回收内存,其他很多内存泄漏就是忘了手工释放内存Create(Self);//由self对象负责释放创建的对象,只要self没有释放掉,转载 2013-02-19 14:52:09 · 5496 阅读 · 0 评论 -
StringList存入时忽略相同元素
//避免重复值var List: TStringList;begin List := TStringList.Create; List.Add('aaa'); List.Sorted := True; //需要先指定排序 List.Duplicates := dupIgnore; //如有重复值则放弃 List.Add('aaa0'); List.add('aaa'原创 2013-04-26 21:00:40 · 1337 阅读 · 0 评论 -
让TdirectoryListBox显示系统隐藏文件夹和文件
修改FileCtrl TDirectoryListbox.ReadDirectoryNames函数 再另存FileCtrl到当前工程项目当前目录function TDirectoryListbox.ReadDirectoryNames(const ParentDirectory: string; //增加读取隐藏系统文件 DirectoryList: TStringList): Integ转载 2013-04-30 00:37:25 · 1021 阅读 · 0 评论 -
Free
1、在方法中创建,在方法的收尾时.Free。2、在单元中创建,在单元的释放时.Free。二、Delphi有优化代码的功能,一般情况下,即使你不写Free。在程序结束时,它会释放的。三、写Free是程序员的一个良好的习惯。如果你的程序不是正常退出,就会造成内存被占用。四、对象的创建,如果寄宿在Form(父控件)上,Form释放时,它同时被释放,特别是无寄宿关系(父控件)的,一定要在不转载 2015-04-09 01:00:03 · 770 阅读 · 0 评论