![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Delphi
happyChen2016
大道至简,知易行难
展开
-
delphi中exit,abort,break,continue,halt,runerro 的区别
delphi中表示跳出的有break,continue, exit,abort, halt, runerror。1、break 强制退出循环(只能放在循环中),用于从For语句,while语句或repeat语句中强制退出。2、continue 用于从For语句,while语句或repeat语句强行结束本次称称循环,并开始下一次循环。3、exit 用于从当前代码块中退出。若该代码为主转载 2014-07-23 21:40:56 · 885 阅读 · 0 评论 -
判断文件是否被占用
判断文件FileName是否正在被打开/使用,如果被占用返回true,否则返回falsefunction IsFileInUse(const FileName: string): boolean;var HFileRes: HFILE;begin if not FileExists(FileName) then begin Result := False转载 2014-12-30 13:03:27 · 875 阅读 · 0 评论 -
判断windows进程是否存在
判断进程是否存在,存在返回true,不存在返回falsefunction IsTaskRunning(TaskName:string):Boolean;constPROCESS_TERMINATE = $0001;varContinueLoop: BOOL;FSnapShotHandle: THandle;FProcessEntry32: TProcessEntry32转载 2014-12-29 19:51:00 · 1517 阅读 · 0 评论 -
delphi 运行外部程序函数winexec WinExecAndWait32 CreateProcess
转载地址:http://blog.sina.com.cn/s/blog_7fdf737901013vgh.html运行外部程序但不需等待winexec运行外部程序并等待外部程序结束才返回结果的函数function WinExecAndWait32(FileName: string; Visibility: Boolean): integer;var zAppNam转载 2014-12-29 19:46:32 · 1390 阅读 · 0 评论 -
根据文件路径获取剩余磁盘空间
function GetFreeSize(filePath:String):Int64;var FreeBytesAvailableToCaller : TLargeInteger; FreeSize : TLargeInteger; TotalSize : TLargeInteger; Drive : string;begin Drive := Extrac原创 2015-01-14 12:24:03 · 722 阅读 · 0 评论 -
四舍五入函数
引入math单元function RoundEx(Value: Extended; RoundMode: TFPURoundingMode = rmUp): Int64;var RM: TFPURoundingMode;begin RM := GetRoundMode; try SetRoundMode(RoundMode); Result := Round(Val转载 2015-01-14 23:48:31 · 591 阅读 · 0 评论 -
设置开机自启动函数
引入 Registry procedure SetAutoRun(ok: boolean);var Reg:TRegistry; //首先定义一个TRegistry类型的变量Regbegin Reg:=TRegistry.Create; try //创建一个新键 Reg.RootKey:=HKEY_原创 2015-01-14 23:43:20 · 568 阅读 · 0 评论 -
根据文件路径检测文件大小并检测是否正在被占用
function CheckFileSize(sPath: string): Int64;var FilePath: AnsiString; FStream:TFileStream; bOpen:Boolean; //判断文件FileName是否正在被打开/使用 function IsFileInUse(const FileName: string): boole原创 2015-01-14 17:12:40 · 418 阅读 · 0 评论 -
删除文件夹中包含的子文件夹及文件
//删除目录和目录下得所有文件和文件夹procedure DeleteDir(sDirectory, DotDelDir: String);var sr: TSearchRec; sPath,sFile: String;begin if rightstr(sDirectory, 1) sDirectory := sDirectory + '\'; i原创 2014-11-22 11:19:30 · 2106 阅读 · 0 评论 -
Delphi获取显卡和系统各种音频设备的代码实现
转载 http://www.codefans.net/articles/396.shtmlDelphi获取不同的声音播放设备,这些设备包括:Aux设备、Wave播放设备、录音设备、MIDI音乐播放、MIDI音乐输入设备、游戏杆设备、混合设备,同时也可获取到显卡硬件信息。如果你需要使用Delphi获取上述任一个系统设备的话,你不妨参考下这个代码,运行截图:unit Unit1转载 2014-11-27 12:26:03 · 2426 阅读 · 0 评论 -
delphi char与string比较
procedure TForm1.CompareCharToString(chstr: Char; str: string);var aa: array[0..1]of AnsiChar; str1: string;begin chstr := 'a'; str := 'a'; aa[0] := AnsiChar(chstr); str1 := StrP原创 2014-08-19 16:10:43 · 1202 阅读 · 0 评论 -
用WebBrowser实现HTML界面的应用和交互
unit Unit1;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.OleCtrls, SHDocVw,转载 2014-08-28 13:16:09 · 1056 阅读 · 0 评论 -
Delphi中多线程用Synchronize实现VCL数据同步显示
概述: VCL实现同步的另一种方法就是调用线程类的Synchronize的过程,此过程需要一个无参数的procedure,故在此procedure中无法传递参数值,但可以通过类的成员来实现。在类的Execute中只须调用Synchronize就可以了。实现: 关键在于对Synchronize参数的定义。定义一个无参数的procedure通过它转载 2014-08-25 14:12:05 · 1468 阅读 · 0 评论 -
基于Delphi API写的UDP通讯类
转载地址:http://www.codefans.net/articles/159.shtmlunit TUdp_Class;interfaceuses Classes,Windows,WinSock;type TRecv= procedure (RIP:string;buf:pchar;Bufsize:integer) of object; TRecvExpan转载 2014-07-31 16:46:57 · 1860 阅读 · 0 评论 -
Windows消息机制要点
1. 窗口过程每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wParam, lParam), 当窗口收到消息时系统就会调用此窗口过程来处理消息。(所以叫回调函数)2 消息类型1) 系统定义消息(System-Defined Messages)在SDK中事转载 2014-07-31 17:14:20 · 412 阅读 · 0 评论 -
TThread深入分析
Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编程的全部,此文的目的在于对此作一个补充。线程本质上是进程中一段并发运行的代码。一个进程至少有一个线程,即所谓的主线程。同时还可以有多转载 2014-07-31 16:35:23 · 540 阅读 · 0 评论 -
delphi Winsock非阻塞模式详解
Winsockt的TClientSocket设置ClientType的属性为ctNonBlocking.则通讯模式为非阻塞模式。ctBlocking为阻塞模式,这里说一下阻塞与非阻塞的一些区别。ctBlocking模式当客户端请求数据后,线程阻塞不继续执行,直到服务端返回数据,客户端将据需执行,并读取数据。然而阻塞模式的缺陷还是比较大的,经常会使程序死掉或者假死。当服务端发转载 2014-07-31 09:27:10 · 1273 阅读 · 0 评论 -
获取系统临时目录
usesWinapi.Windows;// 根据系统的环境变量获取系统临时目录function GetWinTempPath: string;var tmpdir: array [0 .. 255] of char;begin GetTempPath(255,@tmpdir); Result :=StrPas(Tmpdir); if copy(Resul转载 2015-01-04 09:07:55 · 557 阅读 · 0 评论