pascal 一些常用函数
维护的一个iss打包脚本,里面需要挺多校验和一些常规操作的函数,所以很多函数都是自己封装再调用,这样以后维护起来比较方便,改动也比较小,罗列下总结的一些比较通用的函数:
//判断是否需要安装某软件
function NeedInstallsoft(): Boolean;
var
version: Cardinal;
begin
result := false;
//32位或64位都没有,才安装
if (RegQueryDWordValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{appid}', 'Version', version) = false) and (RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{appid}', 'Version', version) = false) then begin
result := true;//要安装
end;
end;
//将java路径加到系统环境变量中
function JavaEnvirUpdate() : Boolean;
var
javaPath,EnvirPath:String;
begin
javaPath:= ExpandConstant('c:\java\bin;');
RegQueryStringValue(HKLM, 'System\CurrentControlSet\Control\Session Manager\Environment', 'Path', EnvirPath);
if pos(javaPath,EnvirPath) = 0 then begin
RegWriteStringValue(HKLM,'System\CurrentControlSet\Control\Session Manager\Environment','Path', javaPath+EnvirPath);
end;
end;
//把TArrayOfString转成string的函数
function TArrayOfStringToString(svArray:TArrayOfString): String;
var
nLines,i:Integer;
begin
Result := '';
nLines := GetArrayLength(svArray);
for i := 0 to nLines - 1 do
begin
Result := Result+svArray[i];
end;
end;
//修改 TArrayOfString 中某一个字符串的函数
function TArrayOfStringChanges(svArray:TArrayOfString; FromStr, ToStr: String): TArrayOfString;
var
nLines,i:Integer;
tempStr:String;
begin
nLines := GetArrayLength(svArray);
for i := 0 to nLines - 1 do
begin
tempStr := svArray[i];
if ( Pos(FromStr, tempStr)>0 ) then
begin
StringChangeEx(svArray[i], FromStr, ToStr, True);
end;
end;
Result := svArray;
end;
//获取文件中指定标识符之间的内容
function GetFileSectionContent(fileBuffer:TArrayOfString;startSection,endSection:String): String;
var
RetValue,startpos,copycount : Integer;
filestring:string;
begin
filestring := TArrayOfStringToString(fileBuffer);
RetValue := Pos(startSection,filestring);
if RetValue = 0 then begin
exit;
end;
startpos := RetValue + length(startSection);
RetValue := Pos(endSection,filestring);
if RetValue = 0 then begin
exit;
end;
copycount := RetValue - startpos;
Result := Copy(filestring,startpos,copycount);
end;
//刪除字符串中空格的函數
function DelStringSpace(starstring:String): String;
begin
while pos(' ',starstring)<>0 do begin
delete(starstring,pos(' ',starstring),1);
end;
Result := starstring;
end;
//搜索一个字符出现的次数
function calStringNumber(calstring,stringfile: String): Integer;
var
RetValue:Integer;
begin
Result := 0;
RetValue := Pos(calstring,stringfile);
while (RetValue > 0) do begin
Result := Result+1;
Delete(stringfile,1,RetValue+length(calstring)-1);
RetValue := Pos(calstring,stringfile);
end
end;
//查打指定端口是否被占用
function CheckTCPPortAvaliable(Port: String): Boolean;
var
RunStateContent,IpString,IpStringTotal: String;
RetValue,PortSign,i,IpRetValue: Integer;
RunStateContentarr:TArrayOfString;
begin
Result := true;
Exec('cmd',ExpandConstant('/C netstat -na | findstr "'+Port+'"|findstr /r "LISTENING CLOSE_WAIT ESTABLISHED TIME_WAIT" >c:\VMtcp.txt'), '', SW_HIDE,ewWaitUntilTerminated, RetValue);
LoadStringsFromFile('c:\VMtcp.txt',RunStateContentarr);
RunStateContent := TArrayOfStringToString(RunStateContentarr);
deleteFile('c:\VMtcp.txt');
IpStringTotal := strArr;
IpRetValue := Pos('|',IpStringTotal);
while (IpRetValue > 0) do begin
IpString := Copy(IpStringTotal,1,IpRetValue-1);
Delete(IpStringTotal,1,IpRetValue);
PortSign := pos(IpString+':'+Port,RunStateContent);
if PortSign> 0 then begin
Result := false;
exit;
end;
IpRetValue := Pos('|',IpStringTotal);
end;
end;
//增加IP地址校验函数
function IsValidIP(strIP: string): Boolean;
var
i,j,PartCount: Integer;
Part: string;
begin
PartCount := 0;
while strIP <> '' do
begin
i := Pos('.', strIP);
if i = 0 then
begin
Part := strIP;
strIP := '';
end
//如果取第四位数值了还有点,说明输入有问题
//bug id:15828 2017.7.10 by yelu ces3.11.1.0
else if (PartCount = 3) and (i <> 0) then
begin
Result := False;
Exit;
end
else
begin
Part := Copy(strIP, 1, i - 1);
Delete(strIP, 1, i);
end;
//判断字符中是否有空格
//StrToIntDef返回-1说明part这个字符串不能正常转换成整数
if (Pos(' ', Part) > 0) or (StrToIntDef(Part,-1) = -1)then
begin
Result := False;
Exit;
end
else
begin
j := StrToIntDef(Part,-1);
end;
if (j < 0) or (j > 255) then
begin
Result := False;
Exit;
end;
PartCount := PartCount+1;
end;
Result := PartCount = 4; //必须要有4段
end;
pascal 一些常用函数相关推荐
- DELPHI常用函数集及简要范例 3
##DiskFree, DiskSize Example ----------------------------------------------------------------------- ...
- Matlab常用函数集锦
ndims(A)返回A的维数 size(A)返回A各个维的最大元素个数 length(A)返回max(size(A)) [m,n]=size(A)如果A是二维数组,返回行数和列数 nnz(A)返回A中 ...
- matlab常用函数与常用指令大全
matlab常用函数与常用指令大全 matlab常用函数- - 1.特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 i ...
- C语言程序设计(常用函数说明)
C语言程序设计(常用函数说明) C 语言是1972年由美国的Dennis Ritchie设计发明的,并首次在UNIX操作系统的 DEC PDP-11计算机上使用.它由早期的编程语言 BCPL(Basi ...
- Delphi----DELPHI常用函数集及简要范例(转载大富翁)
KeyLife富翁笔记 作者 : nakata_wang 标题 : DELPHI常用函数集及简要范例 关键字: HELP Functions 函数集 简要范例 分类 : 个人专区 密级 : 公开 ...
- DELPHI常用函数集及简要范例(转载大富翁)
KeyLife富翁笔记 作者 : nakata_wang 标题 : DELPHI常用函数集及简要范例 关键字: HELP Functions 函数集 简要范例 分类 : 个人专区 密级 : 公开 ...
- matlabstrcmpi_matlab 常用函数
一 matlab常用函数 1. 特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 inputname 输入参数名 NaN ...
- php内置常用函数是哪些,PHP常用函数有哪些
PHP常用函数有哪些 导语:PHP主要通过函数实现一些功能,那PHP常用函数有哪些呢?下面就由小编为大家介绍一下,欢迎大家阅读! 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2) ...
- Lua基本语法-书写规范以及自带常用函数
Lua基本语法-书写规范和常用函数 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 String O ...
- SQLserver 常用函数适用方法(转载)
SQL Server 常用函数使用方法(持续更新) 之前就想要把一些 SQL 的常用函数记录下来,不过一直没有实行...嘿嘿... 直到今天用到substring()这个函数,C# 里面这个方法起始值 ...
最新文章
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.
- 项目跑到到了日志警告就卡住了_java中的日志框架梳理(以故事的形式呈现)...
- SAP offline应用的flush按钮实现
- 在单独的WAR组件中对SPA资源和API实现进行分区
- 根据数据库中的值用js设置RadioButtonList选中与否
- 兼容最新PS2021 Raya Pro 5 for Mac——值得推荐的PS终极数字混合扩展面板
- Reveal v4(8796) 使用
- centos7下的elasticsearch-6.2.4安装
- enq: TT - contention等待事件
- mysql关于学校的专业院系_大学里分的院校和分专业系有什么不同
- Flutter布局常用widgets
- xp 无法运行 php.exe,【xpexe文件不能执行】xp exe文件打不开_xp系统exe文件打不开-系统城...
- 1到100的偶数之和是多少_什么白酒适合收藏,收藏多久出手,茅台五粮液老酒价格是多少?...
- DataTable 更改在有数据列的类型方法
- pymysql安装_Python 新手入门必学模块之:pymysql
- 【暴力破解】字典工具
- 【类型初始值设定项引发异常】问题解决
- 德州大学达拉斯分校计算机工程,“你的留学故事”| 德克萨斯大学达拉斯分校交换生感悟...
- 以Crotex M3为例讲解stm32芯片内部原理
- 使用腾讯乐固加固安卓APK