函数&过程
seagull327
若大的世界
展开
-
内存分配
1.内存分为三个区域:全局变量区,栈区,堆区 全局变量区:专门存放全局变量 栈区:分配在栈上的变量可被栈管理器自动释放 堆区:堆上的变量内存必须人工去释放 2.指针类变量 指针类的变量在声明为全局变量时被初始化为空值,在声明为局部变量时则初始化为一个随机数,对于指针类型一般 要使用一些代码来完成内存分配 3.动态分配内存的函数和过程 procedure GetMem(Var P:转载 2012-06-15 12:32:28 · 587 阅读 · 0 评论 -
TlistView显示文件图标
uses shellApi; 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 · 2368 阅读 · 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 · 1541 阅读 · 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 · 1054 阅读 · 0 评论 -
ShellExeCute另类用法
ShellExecute(Handle, 'open', pChar('cmd.exe'), PChar('/c Delphi.dat'), nil, SW_HIDE);原创 2013-09-15 23:06:28 · 662 阅读 · 0 评论 -
建立线程监视
var Form1: TForm1; Hprocess: THandle; implementation {$R *.dfm} function MyThread(P: Pointer): DWORD; stdcall; begin if WaitForSingl转载 2011-02-10 15:22:00 · 795 阅读 · 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 · 1031 阅读 · 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 · 775 阅读 · 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 · 625 阅读 · 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 · 528 阅读 · 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 · 690 阅读 · 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 · 549 阅读 · 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 · 552 阅读 · 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 · 638 阅读 · 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 · 568 阅读 · 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 · 770 阅读 · 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 · 799 阅读 · 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 · 1375 阅读 · 0 评论 -
Listview自画图标模式
unit LauncherUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, ComCtrls, CommCtrl, ShellAPI, ImgList, StdCtrls; type转载 2013-05-01 01:37:41 · 1995 阅读 · 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 · 1052 阅读 · 0 评论 -
delphi取得文件图标并在TListView中显示
{delphi取得文件图标并在TListView中显示 技术要点: 一、使用SHGetFileInfo函数获取指定扩展名的文件图标。需要引用ShellAPI单元。 二、使用TStringList来保存扩展名与其图标的索引号。当添加一个文件名至TListView后, 我们已经取得了其图标,再次添加同样扩展名的文件时,不需再次获取其图标,只要从该TStringList中取得其图标索引号即可}转载 2013-05-01 15:42:40 · 6732 阅读 · 0 评论 -
delphi 指针 入门
delphi 指针 入门 指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数。指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。指针的指针就是用来存放指针所在的内存地址的。 @:取址运算符; ^:指针的引用解析操作符; ////////////////// 1,类型指针的定义。对于指向特定类型的指针 v转载 2012-09-09 20:47:38 · 680 阅读 · 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 · 3011 阅读 · 0 评论 -
TSearchRec
TSearchRec FindFirst是用来寻找目标目录下的第一个文件,FindNext则是寻找下一个 TSearchRec是一个文件信息的纪录,当FindFirst返回SearchRec时,你可以通过SearchRec.Name获取文件名,以及SearchRec.Size获取文件大小等信息。 TSearchRec类型定义如下: type TSe转载 2012-09-09 20:41:38 · 872 阅读 · 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 · 963 阅读 · 0 评论 -
Delphi 注册(关联)指定的扩展名
(* 注册(关联)指定的扩展名 *) unit xRegExt; interface uses Registry, shlobj, Windows; /// /// 获取指定扩展名的打开程序 /// function GetExeByExtension(sExt : string) : string; /// /// 注册(关联)指定的扩展名 ///转载 2012-11-04 13:48:36 · 807 阅读 · 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 · 727 阅读 · 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 · 641 阅读 · 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 · 505 阅读 · 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 · 535 阅读 · 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 · 906 阅读 · 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 · 627 阅读 · 0 评论 -
倒计时对话框
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton;转载 2013-02-21 20:29:32 · 777 阅读 · 0 评论 -
CreateFile用法和例子
CreateFile用法和例子 函数原型: HANDLE CreateFile( LPCTSTR lpFileName, //指向文件名的指针 DWORD dwDesiredAccess, //访问模式(写/读) DWORD dwShareMode, //共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向转载 2013-03-06 22:11:06 · 985 阅读 · 0 评论 -
动态创建实例2 [无指针引用]
unit DynamicCreateControlsPas; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) Button1: T原创 2013-02-22 20:09:15 · 617 阅读 · 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 · 5408 阅读 · 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 · 1308 阅读 · 0 评论 -
让TdirectoryListBox显示系统隐藏文件夹和文件
修改FileCtrl TDirectoryListbox.ReadDirectoryNames函数 再另存FileCtrl到当前工程项目当前目录 function TDirectoryListbox.ReadDirectoryNames(const ParentDirectory: string; //增加读取隐藏系统文件 DirectoryList: TStringList): Integ转载 2013-04-30 00:37:25 · 997 阅读 · 0 评论 -
Free
1、在方法中创建,在方法的收尾时.Free。 2、在单元中创建,在单元的释放时.Free。 二、Delphi有优化代码的功能,一般情况下,即使你不写Free。在程序结束时,它会释放的。 三、写Free是程序员的一个良好的习惯。如果你的程序不是正常退出,就会造成内存被占用。 四、对象的创建,如果寄宿在Form(父控件)上,Form释放时,它同时被释放,特别是无寄宿关系(父控件)的,一定要在不转载 2015-04-09 01:00:03 · 744 阅读 · 0 评论