RtTool/Delphi7/开发档案/马国钢开发代码/ThreeFun/ComFunc/U_CommFunc.pas

304 lines
7.0 KiB
ObjectPascal
Raw Normal View History

2025-01-08 11:55:07 +08:00
unit U_CommFunc;
interface
uses
Windows, Messages,dialogs, SysUtils, Variants,Classes,
StdCtrls, ExtCtrls;
function split(STR_Source :string; STR_Split:string):TStringList; //<2F>ָ<EFBFBD><D6B8>ַ<EFBFBD><D6B7><EFBFBD>
function AddNewLineToStr(sourceStr:String;number:integer):String ; //<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>з<EFBFBD><D0B7><EFBFBD>
function StrToE(source:string;ID:integer;flg:integer):String; //<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
function splitChnFromStr(sourceStr:String):TStringList; //<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function strToArray(sourceStr:string;number:integer):TStringList; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ָ<EFBFBD><D6B8><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD>ָ<EFBFBD>
function okNumeric(str:string):boolean; //<2F><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function okNan(str:string):boolean;
function IsNumber(mStr: string): Boolean; //<2F><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>
function IsInteger(mStr: string): Boolean; //<2F><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊһ<CEAA><D2BB>һ<EFBFBD><D2BB>
function StrToOne(sourceStr:string):String;
implementation
//<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ָ<D6B8><EEBAAF>
function split(STR_Source :string; STR_Split:string):TStringList;
var
temp:String;
i:Integer;
begin
Result:=TStringList.Create;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>Է<EFBFBD><D4B7><EFBFBD><EFBFBD>򷵻ؿ<F2B7B5BB><D8BF>б<EFBFBD>
if trim(STR_Source) = '' then exit;
temp:=STR_Source;
i:=pos(STR_Split,STR_Source);
while i <> 0 do
begin
Result.add(copy(temp,0,i-1));
Delete(temp,1,i+length(STR_Split)-1); //<2F><><EFBFBD><EFBFBD>STR_Split<69><74><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>1<EFBFBD>Ļ<EFBFBD><><D4AD><EFBFBD><EFBFBD>ֻɾ<D6BB><C9BE>STR_Split<69>ַ<EFBFBD><D6B7>ĵ<EFBFBD>һ<EFBFBD><D2BB>.
i:=pos(STR_Split,temp);
end;
Result.add(temp);
end;
//**************************************************************
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>з<EFBFBD><D0B7><EFBFBD> number:һ<><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
function AddNewLineToStr(sourceStr:String;number:integer):String ;
var
i:integer;
tmpStr:string;
tstr_tmp:TstringList;
isNext:boolean;
begin
isNext:=false;
tmpStr:='';
tstr_tmp:=Tstringlist.create();
for i:=1 to length(sourceStr) do
begin
if isNext then
begin
isNext:=false ;
continue;
end;
if (ord(sourceStr[i])>=33)and(ord(sourceStr[i])<=126) then
begin
tstr_tmp.Append(sourceStr[i]);
isNext:=false;
end
else
if (ord(sourceStr[i])>=127) then
begin
tstr_tmp.Append(copy(sourceStr,i,2));
isNext:=true;
end;
end; //end for
for i:=1 to tstr_tmp.Count do
begin
if (i mod number=0) and (i<>tstr_tmp.Count) then
tmpStr:=tmpStr+tstr_tmp.Strings[i-1]+chr(13)
else
tmpStr:=tmpStr+tstr_tmp.Strings[i-1];
end;
result:=tmpStr;
end;
//**************************************************************
// <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function splitChnFromStr(sourceStr:String):TStringList ;
var
i:integer;
tstr_tmp:TstringList;
isNext:boolean;
tmp:String;
begin
isNext:=false;
tstr_tmp:=Tstringlist.create();
for i:=1 to length(sourceStr) do
begin
if isNext then
begin
isNext:=false ;
continue;
end;
if (ord(sourceStr[i])>=33)and(ord(sourceStr[i])<=126) then
begin
if sourceStr[i] in['/','=','-','+','*','\','(',')'] then
begin
if Length(tmp)>2 then
begin
tstr_tmp.Append(tmp);
tmp:='';
end;
isNext:=false;
end
else
begin
tmp:=tmp+sourceStr[i];
isNext:=false;
end;
end
else
if (ord(sourceStr[i])>=127) then
begin
//tstr_tmp.Append(copy(sourceStr,i,2));
tmp:=tmp+copy(sourceStr,i,2);
isNext:=true;
end;
end; //end for
if Length(tmp)>2 then tstr_tmp.Append(tmp);
result:=tstr_tmp;
end;
//*****************************************************
// <20><><EFBFBD><EFBFBD> 1:<3A><> 0:<3A><>
function StrToE(source:string;ID:integer;flg:integer):String;
var
i:integer;
tmp:String;
begin
setLength(tmp,length(source));
if flg=1 then
begin
for i:=1 to Length(source) do
begin
tmp[i]:=chr(ord(source[i])+ID);
end;
end
else if flg=0 then
begin
for i:=1 to Length(source) do
begin
tmp[i]:=chr(ord(source[i])-ID);
end;
end;
result:=tmp;
end;
//********************************************************************
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ָ<EFBFBD><D6B8><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD>ָ<EFBFBD>
function strToArray(sourceStr:string;number:integer):TStringList;
var
i,cnt:integer;
tmpStr:string;
tstr_tmp1,tstr_tmp2:TstringList;
isNext:boolean;
begin
isNext:=false;
tmpStr:='';
tstr_tmp1:=Tstringlist.create();
tstr_tmp2:=Tstringlist.create();
for i:=1 to length(sourceStr) do
begin
if isNext then
begin
isNext:=false ;
continue;
end;
if (ord(sourceStr[i])>=33)and(ord(sourceStr[i])<=126) then
begin
tstr_tmp1.Append(sourceStr[i]);
isNext:=false;
end
else
if (ord(sourceStr[i])>=127) then
begin
tstr_tmp1.Append(copy(sourceStr,i,2));
isNext:=true;
end;
end; //end for
if number=1 then
begin
result:=tstr_tmp1;
exit;
end;
cnt:=1;
tmpStr:='';
for i:=0 to tstr_tmp1.Count-1 do
begin
if cnt<=number then
begin
tmpStr:=tmpStr+tstr_tmp1.strings[i];
inc(cnt);
end
else
begin
tstr_tmp2.append(tmpStr);
tmpStr:=tstr_tmp1.strings[i];
cnt:=2;
end;
end;
if tmpStr<>'' then tstr_tmp2.append(tmpStr);
result:=tstr_tmp2;
end;
//*************************************************************
//<2F><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function okNumeric(str:string):boolean;
begin
str:=trim(str);
try
if str='' then
begin
result:=false;
exit;
end;
strToFloat(str);
result:=true;
except
on EConvertError do
result:=false;
end;
end;
//*************************************************************
//<2F><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function okNan(str:string):boolean;
begin
result:=true;
str:=trim(str);
try
if str='' then
begin
result:=false;
exit;
end;
strToInt(str);
except
on EConvertError do
result:=false;
end;
end;
//****************************************************************
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊһ<CEAA><D2BB>һ<EFBFBD><D2BB>
function StrToOne(sourceStr:string):String;
var
i:integer;
isNext:Boolean;
tmp:string;
begin
isNext:=false;
for i:=1 to length(sourceStr) do
begin
if isNext then
begin
isNext:=false ;
continue;
end;
if (ord(sourceStr[i])>=33)and(ord(sourceStr[i])<=126) then
begin
tmp:=tmp+(sourceStr[i]);
isNext:=false;
end
else
if (ord(sourceStr[i])>=127) then
begin
tmp:=tmp+(copy(sourceStr,i,2))+#13;
isNext:=true;
end;
end; //end for
result:=tmp;
end;
//* <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD> *//
function IsNumber(mStr: string): Boolean;
var
I: Real;
E: Integer;
begin
Val(mStr, I, E);
Result := E = 0;
E := Trunc(I);
end;
// * <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *//
function IsInteger(mStr: string): Boolean;
var
I: Integer;
E: Integer;
begin
Val(mStr, I, E);
Result := E = 0;
E := Trunc(I);
end;
end.