304 lines
7.0 KiB
ObjectPascal
304 lines
7.0 KiB
ObjectPascal
![]() |
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.
|
|||
|
|
|||
|
|