每人一个方法!

yf520gn 2008-11-12 12:55:19
大家做了那么多年程序,肯定都有自己写的比较得意的过程,贴出来让大家共享一下,一起进步,贴的时候请说明该过程或函数的用法,用途!希望DELPHI版的各位大佬和朋友都支持一下!
我先来一个,此函数可以通过名字查找进程,如果有该进程则返回TRUE,否则FALSE。
function FindExe(AName: string): Boolean;
var
v_ProcessSnap: THandle;
v_pe32: TProcessEntry32;
v_Str: String;
begin
Result := False;

v_ProcessSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (v_ProcessSnap = INVALID_HANDLE_VALUE) then Exit;
v_pe32.dwSize := sizeof(PROCESSENTRY32);
if Process32First(v_ProcessSnap, v_pe32) then
repeat
v_Str := v_pe32.szExeFile;
if v_Str = AName then
begin
Result := True;
Break;
end;
until not Process32Next(v_ProcessSnap, v_pe32);

CloseHandle(v_ProcessSnap);
end;
...全文
269 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yf520gn 2008-11-13
  • 打赏
  • 举报
回复
顶~
panrongzeng 2008-11-12
  • 打赏
  • 举报
回复
我觉得好的方法、过程都是看到别人的精华,对自己写的从来不觉得好。
所以拿出来有盗版嫌疑,还是算了,不过可以从这贴吸取精华
僵哥 2008-11-12
  • 打赏
  • 举报
回复
关于CPUID,可以参考一下这里的资料:http://softpixel.com/~cwright/programming/simd/cpuid.php
zhao_yong 2008-11-12
  • 打赏
  • 举报
回复
获取CPU的ID.

unit CUP;

interface
uses Windows, SysUtils,Tlhelp32;

type
TCPUID=array[1..4]of LongInt;
TVendor=array[0..11] of Char;

function IsCPU_Available:Boolean;register;
function GetCPUID:TCPUID;assembler;register;
function GetCPUVendor:TVendor;assembler;register;

implementation

function IsCPU_Available:Boolean;register;
asm
pushfd
pop eax
mov edx,eax
xor eax,ID_BIT
push eax
popfd
pushfd
pop eax
xor eax,edx
jz @Exit
mov al,True
@Exit:
end;

function GetCPUID:TCPUID;assembler;register;
asm
PUSH EBX
PUSH EDI
MOV EDI,EAX
MOV EAX,1
DW $A20F
STOSD
MOV EAX,EBX
STOSD
MOV EAX,ECX
STOSD
MOV EAX,EDX
STOSD
POP EDI
POP EBX
end;

function GetCPUVendor:TVendor;assembler;register;
asm
PUSH EBX
PUSH EDI
MOV EDI,EAX
MOV EAX,0
DW $A20F
MOV EAX,EBX
XCHG EBX,ECX
MOV ECX,4
@1:
STOSB
SHR EAX,8
LOOP @1
MOV EAX,EDX
MOV ECX,4
@2:
STOSB
SHR EAX,8
LOOP @2
MOV EAX,EBX
MOV ECX,4
@3:
STOSB
SHR EAX,8
LOOP @3
POP EDI
POP EBX
end;

end.


僵哥 2008-11-12
  • 打赏
  • 举报
回复
用于多线程当中使用对象安保证完全释放的,支持引用计数的基类
Create的时候会先增加一个引用计数,其它使用到的地方就可通过Attach来增加引用计数,如果增加成功则返回该对象的实例指针,否则返回Nil表示失败.每次使用之前增加引用计数,用完调用Free释放(虽然有提供Detach,但是不建议使用).这个对于在多线程当中编程,特别是进行异步/并行处理的时候,就有相当大的用处.
unit UnitManagedObject;

interface

uses
Windows
;
type
TManagedObject = class(TObject)
{Management Properties}
private
FManagementCount : Integer; //对象引用计数
protected
function Detach: Integer;
public
{structor}
constructor Create;
public
{Management}
procedure Free;
function Attach:TManagedObject;
end;
implementation

{TManagedBaseObject}
{structor}
constructor TManagedObject.Create;
begin
Inherited Create;
FManagementCount := 1;
end;

{Management}
function TManagedObject.Attach : TManagedObject;
begin
Result := Nil;
if InterlockedIncrement(FManagementCount) = 1 then
begin
InterlockedDecrement(FManagementCount);
Exit;
end;
Result := self;
end;

function TManagedObject.Detach : Integer;
begin
Result := InterlockedDecrement(FManagementCount);
end;

procedure TManagedObject.Free;
begin
if Detach>0 then
Exit;
Inherited;
end;
end.
fangsp 2008-11-12
  • 打赏
  • 举报
回复
支持一个
nanchangfantasy 2008-11-12
  • 打赏
  • 举报
回复
呵呵
nanchangfantasy 2008-11-12
  • 打赏
  • 举报
回复
顶一下,本人刚入行delphi,暂无得意的过程,
只能帮忙顶下
yf520gn 2008-11-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hys_427 的回复:]
支持一下
[/Quote]都猩猩了,还只是口头支持吗?鄙视一下!
喝口水 2008-11-12
  • 打赏
  • 举报
回复
支持一下
感谢您了解学习【英特尔OpenVINO™工具套件】系列课程,为了能给您提供更好的课程体验,现诚邀您花费2分钟的时间填写关于本课程的调查问卷。我们将在填写问卷的同学中抽取5名幸运的小伙伴儿,每人赠送一张价值99元的CSDN·VIP月卡,感谢您的参与!问卷地址:https://t.csdnimg.cn/07Qv 英特尔® OpenVINO™工具套件中级课程面向有一定基础的学员。若您是一名计算视觉技术的初学者,我们将建议您先学习英特尔® OpenVINO™工具套件的初级课程,再进行中级课程的学习。本课程将主要介绍计算机视觉应用的相关知识,特别是英特尔® OpenVINO™工具套件的整体架构以及使用方法。整个课程的视频课程部分包含了OpenVINO™模型优化器和推理引擎的使用,视频解码的OpenCV,MediaSDK和Gstreamer的使用,AI应用中的推理优化,以及构建一套完整的视频推理AI应用的Demo演示。并且课程提供了动手实验环节,届时您将使用一个虚拟云终端进行操作实验。通过本课程的学习,将帮助您快速上手英特尔® OpenVINO™ 工具套件的使用方法,并且能够熟悉如何去快速构建一款AI应用。为保证您顺利收听课程参与测试获取证书,还请您使用电脑端进行课程学习!为了便于您更好的学习本次课程,推荐您在本地下载英特尔® OpenVINO™工具套件,下载地址:https://t.csdnimg.cn/yOf5  Intel®Devcloud注册地址:https://devcloud.intel.com/ 收听中级课程并完成动手实验,可获得专属定制证书,还可以参与定制周边的抽奖活动! 8月1日-9月39日,学习完成【初级课程】的小伙伴,可以免费学习【中级课程】,中级课程免费学习优惠券将在学完初级课程后的7个工作日内发送至您的账户,您可以在:https://i.csdn.net/#/wallet/coupon查询优惠券情况,请大家报名初级课程后尽快学习哦~初级课程学习:https://edu.csdn.net/course/detail/27685 请注意:点击报名即表示您确认您已年满18周岁,并且同意CSDN基于商务需求收集并使用您的个人信息,用于注册OpenVINO™工具套件及其课程。CSDN和英特尔会为您定制最新的科学技术和行业信息,将通过邮件或者短信的形式推送给您,您也可以随时取消订阅不再从CSDN或Intel接收此类信息。 查看更多详细信息请点击CSDN“用户服务协议”,英特尔“隐私声明”和“使用条款”。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧