
Delphi程序实例
文章平均质量分 80
踏雪无痕
这个作者很懒,什么都没留下…
展开
-
Delphi获取文件名、文件名不带扩展名、文件名的方法;delphi 获取文件所在路径
取文件名ExtractFileName(FileName);取文件扩展名:ExtractFileExt(filename);取文件名,不带扩展名Function ExtractFileNameNoExt(FileString: String): String;Var F转载 2016-02-25 20:07:12 · 30923 阅读 · 0 评论 -
多线程编程(5) - 从 CreateThread 说起[续三]
function CreateThread( lpThreadAttributes: Pointer; dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; {入口函数的指针} lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWOR转载 2015-05-01 15:18:39 · 492 阅读 · 0 评论 -
多线程编程(4) - 从 CreateThread 说起[续二]
function CreateThread( lpThreadAttributes: Pointer; dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; {入口函数的参数} dwCreationFlags: DWORD; var lpThreadId: DWOR转载 2015-05-01 15:17:58 · 560 阅读 · 0 评论 -
多线程编程(2) - 从 CreateThread 说起
function CreateThread( lpThreadAttributes: Pointer; {安全设置} dwStackSize: DWORD; {堆栈大小} lpStartAddress: TFNThreadStartRoutine; {入口函数} lpParameter: Pointer;转载 2015-05-01 15:15:16 · 606 阅读 · 0 评论 -
多线程编程(1) - 先入门再说
多线程应该是编程工作者的基础技能, 但这个基础对我来讲的确有点难(起码昨天以前是这样).开始本应该是一篇洋洋洒洒的文字, 不过我还是提倡先做起来, 在尝试中去理解.先试试这个:procedure TForm1.Button1Click(Sender: TObject);var i: Integer;begin for i := 0 to 500000 do转载 2015-05-01 15:14:19 · 607 阅读 · 0 评论 -
多线程编程(7) - 从 CreateThread 说起[续五]
function CreateThread( lpThreadAttributes: Pointer; {安全设置} dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD转载 2015-05-01 15:21:17 · 532 阅读 · 0 评论 -
多线程编程(6) - 从 CreateThread 说起[续四]
function CreateThread( lpThreadAttributes: Pointer; dwStackSize: DWORD; {堆栈大小} lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD转载 2015-05-01 15:19:29 · 534 阅读 · 0 评论 -
delphi 定义变量同时赋值
全局变量可以定义同时赋值var s:string = 'abc';implementationvar i:integer = 100; kk:array[1..3] of integer = (1,2,3); 函数或过程中的局部变量定义时不能直接赋值转载 2015-05-04 09:36:18 · 9904 阅读 · 0 评论 -
Delphi中使用TThread类实现多线程
之前写的多线程程序都是用api直接做的,没有用过delphi自带Tthread类,刚才看了下,写了个demo,希望对新手有帮助。。。窗体单元:unit main;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs,myTh转载 2015-05-03 12:42:07 · 10460 阅读 · 0 评论 -
cxGrid多选使用CheckBox cxGrid动态创建带CheckBox列时遇到的问题...
cxgrdbtblvwGrid1DBTableView1.DataController.DataModeController.GridMode:=False; cxgrdbtblvwGrid1DBTableView1.DataController.DataModeController.SmartRefresh:=True; cxgrdbtblvwGrid1DBTableView1.Data转载 2015-05-09 21:13:03 · 5537 阅读 · 0 评论 -
多线程编程(9) - 认识等待函数 WaitForSingleObject
一下子跳到等待函数 WaitForSingleObject, 是因为下面的 Mutex、Semaphore、Event、WaitableTimer 等同步手段都要使用这个函数; 不过等待函数可不止 WaitForSingleObject 它一个, 但它最简单.function WaitForSingleObject( hHandle: THandle; {要等待的对象句柄}转载 2015-05-01 17:44:04 · 713 阅读 · 0 评论 -
多线程编程(8) - 多线程同步之 CriticalSection(临界区)
先看一段程序, 代码文件:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) ListBox1: TListBox;转载 2015-05-01 17:44:22 · 647 阅读 · 0 评论 -
一个TThread类多线程实例
窗体单元:unit main;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs,myThread, StdCtrls;typeTForm1 = class(TForm) Label1: TLabel;转载 2015-08-01 11:40:15 · 1325 阅读 · 0 评论 -
delphi 实现拖拽打开文件
步骤如下,delphi 7测试通过1、在uses 中增加 ShellAPI2、增加拖拽的消息处理函数 //声明 protected procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES;//实现procedure TForm1.WMDROPFILES(var Msg:转载 2015-07-26 01:56:27 · 3593 阅读 · 1 评论 -
Delphi : 文件的拖放和打开,拖拽
user shellapitypeTForm1 = class(TForm)ListView1: TListView;procedure FormCreate(Sender: TObject);private{ Private declarations }public{ Public declarations }procedure AppMessage(var转载 2015-07-26 01:54:41 · 3932 阅读 · 0 评论 -
NativeXml (1):下载、安装、测试
终于又能挤出点时间学点 Delphi 了。学习 NativeXml 的目的:1、以后再用到 Xml 就准备用它了。2、学习其内存处理机制。3、更多了解 Xml 的相关细节。刚刚下载到最新的 NativeXml328,发现竟是 3 天前刚刚更新的。相关地址:http://www.simdesign.nl/xml.htmlhttp://www.simdesign转载 2015-07-26 13:02:03 · 3521 阅读 · 0 评论 -
在 Delphi 2009 中, for in 循环都能用在什么地方?
一、遍历 TStringsvar List: TStrings; s: string;begin List := TStringList.Create; List.CommaText := 'aaa,bbb,ccc'; for s in List do ShowMessage(s); List.Free;end;二、遍历数组var转载 2015-05-24 16:59:48 · 903 阅读 · 0 评论 -
Delphi获取身份证号码验证码算法
18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 1、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。2、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行转载 2015-06-07 12:26:00 · 1721 阅读 · 0 评论 -
Delphi 禁用TEdit右键菜单及复制粘贴
Delphi 禁用TEdit右键菜单及复制粘贴简的单方法如下:1) 设置TEdit的ReadOnly 属性为True Edit1.ReadOnly := True;2) 在TEdit的OnContextPopup中使Handled := True[delphi] view plaincopyprocedure TFrmRep转载 2015-05-20 20:09:27 · 2550 阅读 · 0 评论 -
多线程编程(3) - 从 CreateThread 说起[续]
function CreateThread( lpThreadAttributes: Pointer; dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; {启动选项} var lpThreadId: DWORD):转载 2015-05-01 15:16:36 · 560 阅读 · 0 评论 -
多线程编程(10) - 多线程同步之 Mutex (互斥对象)
原理分析:互斥对象是系统内核对象, 各线程都可以拥有它, 谁拥有谁就能执行; 执行完毕, 用 ReleaseMutex 函数释放拥有权, 以让其他等待的线程使用.其他线程可用 WaitForSingleObject 函数排队等候(等候也可以理解为排队申请).使用过程:var hMutex: THandle; {应该先声明一个全局的互斥句柄}CreateMutex转载 2015-05-01 17:48:39 · 641 阅读 · 0 评论 -
delphi中combobox键值对
1.添加键值对: cbb1.Items.AddObject(‘显示的文字‘, TObject(NewStr(’作为值存在的字符串‘)));2.读取选中键的值 ShowMessage(PString(cbb1.Items.Objects[cbb1.ItemIndex])^); 实例:从文件中读取cbbEffect的键值对IniPath :=转载 2015-04-25 19:33:30 · 4970 阅读 · 0 评论 -
Delphi中TeeChart的各种属性
概述:主要说明在delphi中TeeChart的各种属性,以及提供一个TeeChart的使用实例。TeeChart控件介绍TeeChart Pro是西班牙Steema SL公司开发的图表类控件,主要用来生成各种复杂的图表。熟悉Delphi和C++ Builder的编程人员对它不会陌生,因为在Delphi和C++ Builder里包括了TeeChart的VCL版本。转载 2015-03-10 20:18:43 · 4944 阅读 · 0 评论 -
怎样获取按钮的坐标
procedure TForm1.SpeedButton1Click(Sender: TObject);var Apoint:TPoint;begin APoint:=TSpeedButton(Sender).ClientToScreen(Point(0,TSpeedButton(Sender).ClientHeight)); PopupMenu1.Popup(Apoint.X,A转载 2015-03-08 11:20:08 · 2544 阅读 · 0 评论 -
判断字符串中子串个数
方法一:(来自万一老师)function GetSubStrNum(const SubStr,Str: WideString): Integer;var pw: PWideChar; i,SubLen: Integer;begin Result := 0; pw := PWideChar(Str); SubLen := Length(SubStr); while i >转载 2014-01-07 21:13:19 · 3526 阅读 · 0 评论 -
建立快捷方式的函数: CreateShortcut - 非常实用、特别方便
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton;转载 2014-01-07 20:53:07 · 7470 阅读 · 0 评论 -
获取多网卡IP地址(D7~XE5)和本机计算机名称
方法一:D2010以前版本,以DELPHI7为例unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,WinSock, Menus;type TForm1 = class(TForm)原创 2014-01-02 15:53:34 · 2694 阅读 · 0 评论 -
使TEdit只接受数字输入
本实例演示如何让TEdit组件只能够接受数字输入。向窗体上添加一个TEdit组件,用于显示用户输入的数字。添加组件后的窗体如图8-32所示。图8-32 添加组件后的窗体添加窗体初始化代码如下:procedure TForm1.FormCreate(Sender: TObject);var wl:Integer;begin wl:=GetWindow转载 2014-01-01 16:28:37 · 1484 阅读 · 0 评论 -
获取本地计算机的名称和IP地址
本程序介绍如何获取本地计算机的名称和IP地址。向窗体上添加两个TLabel组件、两个TEdit组件和一个TButton组件,设计完成的主界面如图6-8所示。图6-8 主界面首先在程序的uses段中添加对WinSock的引用,然后添加一个GetHostName自定义函数,在其中调用GetComputerName函数获取计算机名称,响应代码如下:function Tfrm转载 2014-01-01 16:46:26 · 1927 阅读 · 0 评论 -
同时只能够运行一个程序
本实例介绍如何做得同时只能够运行一个程序。首先在项目文件(*.dpr)的uses段中添加Windows的引用,然后声明一个hWnd类型的变量hMutex:var hMutex:hWnd;最后在项目文件的begin和end中添加以下代码: Application.Initialize; Application.Title:='test'; Cre转载 2014-01-01 15:21:56 · 1099 阅读 · 0 评论 -
自定义TEdit的允许输入字符
向窗体上添加一个TEdit组件,用于显示用户输入的字符。添加组件后的窗体如图8-34所示。图8-34 添加组件后的窗体TEdit组件有一个OnKeyPress事件,在该事件中有一个Key参数,其中存储了用户当前输入的字符,如果设置这个参数为#0,就可以屏蔽用户的输入,从而实现自定义输入字符的功能,为此添加响应代码如下:procedure TForm1.Edit1KeyPres转载 2014-01-01 16:32:22 · 1138 阅读 · 0 评论 -
建立快捷方式
本实例介绍如何在桌面、程序组和启动菜单中建立快捷方式。向窗体上添加3个TButton组件,分别用于向桌面、程序组和启动菜单中添加快捷方式。设计完成的主界面如图4-16所示。图4-16 主界面首先在程序的uses段中添加对ComObj、ShlObj和Activex的引用,然后添加6个全局变量如下: tmpObject : IUnknown; tmpSLink :转载 2014-01-01 15:36:06 · 1019 阅读 · 0 评论 -
计算Delphi代码段执行时长
var t1,t2:int64; r1:int64; begin t1:=GetTickCount;//获取开始计数 WINDOWS API sleep(1000);{do...}//执行要计时的代码 t2:=GetTickCount;//获取结束计数值 r1:=t2-t1;//取得计时时间,单位毫秒(ms) showmessage(inttostr(r1));转载 2014-01-09 20:52:48 · 2332 阅读 · 0 评论 -
delphi中如何查看某个程序在进程中是否已经存在
uses TLHelp32 注意 function FindProcess(AFileName: string): boolean; var hSnapshot: THandle;//用于获得进程列表 lppe: TProcessEntry32;//用于查找进程 Found: Boolean;//用于判断进程遍历是否完成 begin Result转载 2014-01-14 15:35:47 · 2569 阅读 · 0 评论 -
利用INDY的TIDHASHMESSAGEDIGEST5类计算MD5(INDY10)
Indy自带TIdHashMessageDigest*类,可以方便的计算MD2、MD4和MD5。代码很简单,其中需要注意的是,Indy9中 Md5Encode.AsHex(Md5Encode.HashValue(S)) 这种写法在Indy10里已经不能用了,之前就是因为这个卡了好久。unit uMD5;interfaceuses IdHashMessageDi转载 2015-03-07 20:47:29 · 3161 阅读 · 0 评论 -
窗口桌面置顶(主窗口和子窗口)
1、在窗口的formCreate事件中,增加以下代码:[delphi] view plaincopyApplication.NormalizeTopMosts; 2、在窗口的formShow事件中,增加以下代码:[delphi] view plaincopyAppl转载 2014-01-06 21:23:09 · 2606 阅读 · 0 评论 -
DELPHI中MDI子窗口的关闭 和打开
Delphi中MDI子窗口的关闭方式默认为缩小而不是关闭,所以当你单击子窗口右上角的关闭按钮时会发觉该子窗口只是最小化,而不是你预期的那样被关闭。解决办法是在子窗口的OnClose事件处理过程中加入如下代码,示例:procedure ChildForm.OnClose(Sender: TObject; var Action: TCloseAction);begin Acti转载 2015-01-24 23:26:07 · 7822 阅读 · 0 评论 -
判断shift,ctrl,alt键是否按下
在组件的OnKeyDown、OnKeyUp 、OnMouseDown和OnMouseUp等事件的处理过程中,有一个TShiftState类型的变量Shift ,TShiftState类型定义如下:1 type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);转载 2014-10-18 15:53:06 · 5102 阅读 · 0 评论 -
实现应用程序的文件拖放功能〖源代码〗
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellAPI;type TForm1 = class(TForm) Memo1: TMemo; procedure F转载 2014-08-31 14:28:41 · 919 阅读 · 0 评论 -
Delphi开发技巧:字符串的相关判断
某一字符是否在字符串中 本实例是用AnsiMidstr()函数获取指定字符串中的单个字符,也可以获取指定长度的子字符串。运行结果如图5.10所示。图5.10 判断某一字符是否在字符串中 主要代码如下: procedure TForm1.Button1Click(Sender: TObject); var i,p:Integ转载 2014-08-31 10:29:51 · 3653 阅读 · 0 评论