// JavaまたはC#に慣れている人は、私の日常の仕事でさえありませんここには不適切なものがあれば、
ユニットベースクラス;
インタフェース
用途
sysutils、classes、strutils、idglobal、数学。
タイプ
tcharset = charのセット。
var
TnormalCharset:tcharset = [#13、#10、#32、 '。'、 '、'、 ';'];
タイプ
tstring = class
プライベート
ftext:string;
公共
function charat(aposition:integer):char;
//指定された位置の文字
関数Tolowercase:文字列;
クラス関数tolowercase(astring:string):文字列;
//小文字
関数Touppercase:文字列;
クラス関数Touppercase(Astring:String):文字列;
//資本
クラス関数valueof(avalue:string):boolean;
クラス関数valueof(avalue:boolean):文字列;
クラス関数stringin(avalue:string; avalues:sring of string):boolean;
クラス関数左(avalue:string; alength:integer):string;
クラス関数right(avalue:string; alength:integer):string;
クラス関数deleteprefix(avalue:string; sixtstring:tcharset = [#32]):string;
クラス関数deleteSuffix(avalue:string; sixtstring:tcharset = [#32]):string;
//
クラス関数比較(avalue1:string; avalue2:string):boolean;
クラス関数HashCode(Avalue:String):integer;
クラス関数lastchar(avalue:string):char;
クラス関数StringReplace(const s、oldpattern、newpattern:string;
フラグ:TreplaceFlags):文字列;
クラス関数Stringofchar(ch:char; count:integer):string;
クラス関数SetString(var S:string; buffer:pchar; len:integer):string;
クラス関数getpy(astr:string):string;
//対応するPinyinを取得します。
クラス関数isallchinese(astr:string):boolean;
クラス関数isallenglish(astr:string):boolean;
クラス関数getFirstword(avalue:string; var aword:string; aseparator:tcharset):整数;
クラス関数getFirstWord(avalue:string; var aword:string; aseparator:string):整数;
//戻り値は、最初からドキュメントまでの長さです。
クラス関数getallword(avalue:string; aseparator:string):tstringlist;
//すべてのキーワードを返します。それを使用した後、結果セットを解放してください。
//注:将来の使用でこの機能を使用しないでください。リロードされたバージョンを使用してください
// getAllword(avalue:string; aseparator:string; astringlist:tstringlist);
クラス手順getallword(avalue:string; aseparator:stringlist:tstrings);
//すべての結果セットをAstringListにロードします。
クラス手順getallwordwithall(avalue:string; aseparator:string; astringlist:tstrings);
クラス関数stringtocharset(avalue:string):tcharset;
クラス関数charsettostring(avalue:tcharset):string;
クラス関数の更新センテンス(aoldstring:string; //操作中の文字列
aupdatesource:文字列; //見つかった単語。
aupdateString:文字列。
asentenceseparator:string;
Awordseparator:String // Document Separator;
):文字列。
//たとえば、「dbarcode asc、dname desc」、 'dbarcode'、 ''、 '、' 'の返品値は
// 'dname desc';
クラス関数deleterepeat(aoldstring:string; //文字を処理する
adeletestring:char; //削除される文字
arepeat:char):文字列
クラス関数ifthen(aexpression:boolean; aTrue:string; afalse:string):string;
//式の値に従って対応する文字列を返します。
クラス関数AbsoluTeToreLate(aabsolute:string; acurrent:string):string;
// 2つのファイルを指定して、絶対パスを相対パスに変換します。
クラス関数relateToAbsolute(arate:string; acurrent:string):string;
クラス関数同様のポジション(aone、atwo:string):integer;
クラス関数getCharnum(Astring:string; achar:char):整数;
クラス関数IndexOf(Astring、Asubstring:String):整数;
クラス関数Zerotoint(Astring:String):整数;
クラス関数Zerotofloat(Astring:String):double;
クラス関数Zerotostr(Astring:String):文字列;
クラス関数sametext(astring、astring1:string):boolean;
クラス関数の逆(アストリング:文字列):文字列;
クラス関数isvalidip(const s:string):boolean;
クラス関数フィルストリング(achar:char; alength:integer):string;
クラス関数スタッフストリング(const atext:string; astart、alength:cardinal;
const asubtext:string):string;
クラス関数getNextString(var sourcestring:string; asplitchar:string):string;
終わり;
//整数タイプ。
Tinteger = class
クラス関数inttostr(ainteger:integer):文字列;
クラス関数inttostr(ainteger:int64):文字列;
クラス関数isvalidint(Astring:string):boolean;
クラス関数isValidInt64(Astring:string):boolean;
クラス関数maxint:整数;
クラス関数maxlongint:整数;
クラス関数HashCode(Ainteger:Integer):整数;
クラス関数inttobin(ainteger:cardinal):string;
クラス関数inttohex(ainteger:integer):string;
クラス関数Hextoint(Astring:String):Integer;
クラス関数MakeRialno(ainteger:integer; adigit:integer):string;
終わり;
tfloat = class
クラス関数isvalidfloat(astring:string):boolean;
クラス関数maxdouble:double;
クラス関数マインドーブル:ダブル;
クラス関数maxextended:拡張;
クラス関数Minextended:拡張;
クラス関数samevalue(const a、b:single; epsilon:single = 0):boolean;
クラス関数samevalue(const a、b:double; epsilon:double = 0):boolean;
クラス関数samevalue(const a、b:extended; epsilon:extended = 0):boolean;
クラス関数floattomoney(const value:double; round:boolean = true):string;
終わり;
tboolean = class
クラス関数booltostr(aboolean:boolean):string;
クラス関数strtobool(astring:string):boolean; // 'true'、false;
終わり;
実装
{tstring}
関数getPyIndExchar(achar:string):char;
始める
ケースワード(achar [1])shl 8 + word(achar [2])of
$ b0a1 .. $ b0c4:result:= 'a';
$ b0c5 .. $ b2c0:result:= 'b';
$ b2c1 .. $ b4ed:result:= 'c';
$ b4ee .. $ b6e9:result:= 'd';
$ b6ea .. $ b7a1:result:= 'e';
$ b7a2 .. $ b8c0:result:= 'f';
$ b8c1 .. $ b9fd:result:= 'g';
$ b9fe .. $ bbf6:result:= 'h';
$ bbf7 .. $ bfa5:result:= 'j';
$ bfa6 .. $ c0ab:result:= 'k';
$ c0ac .. $ c2e7:result:= 'l';
$ c2e8 .. $ c4c2:result:= 'm';
$ c4c3 .. $ c5b55:result:= 'n';
$ c5b6 .. $ c5bd:result:= 'o';
$ c5be .. $ c6d9:result:= 'p';
$ c6da .. $ c8ba:result:= 'q';
$ c8bb .. $ c8f5:result:= 'r';
$ c8f6 .. $ cbf9:result:= 's';
$ cbfa .. $ cdd9:result:= 't';
$ cdda .. $ cef3:result:= 'w';
$ cef4 .. $ d188:result:= 'x';
$ d1b9 .. $ d4d0:result:= 'y';
$ d4d1 .. $ d7f9:result:= 'z';
それ以外
結果:= char(0);
終わり;
終わり;
クラス関数tString.getpy(astr:string):string;
var
I:整数;
始める
結果:= '';
i:= 1から長さ(astr)do
始める
bytetype(astr、i)= mbtrailbyteの場合
結果:= result + getpyindexchar(astr [i -1] + astr [i])
それ以外
byteType(astr、i)= mbsinglebyteの場合
結果:= result + astr [i];
終わり;
終わり;
関数tstring.charat(aposition:integer):char;
始める
結果:= ftext [aposition];
終わり;
クラス関数TString.CharsettoString(avalue:tcharset):string;
始める
終わり;
クラス関数tstring.comparestring(avalue1、avalue2:string):boolean;
始める
結果:=大文字(avalue1)=大文字(avalue2);
終わり;
クラス関数tString.deleteprefix(avalue:string;
固定ストリング:tcharset):文字列;
始める
while system.length(avalue)> 0 do
始める
固定ストリングのAvalue [1]の場合
削除(Avalue、1、1)
それ以外
壊す;
終わり;
結果:= avalue;
終わり;
クラス関数tString.getFirstWord(avalue:string; var aword:string; aseparator:tcharset
):整数;
var
TMPSTR:文字列;
TMPPOS:整数;
始める
tmpstr:= deletesuffix(avalue、aseparator);
tmpstr:= deleteprefix(avalue、aseparator);
結果:= length(avalue) - 長さ(tmpstr);
{if length(tmpstr)= 0 then Exit;
if(tmpstr [1] = '' '')および(tmpstr [2] = '' '')then
始める
tmpposの場合:= 3から長さ(tmpstr)
始める
['' ']でtmpstr [tmppos]の場合
壊す;
終わり;
終わり;
tmppos> 3の場合、tmppos:= tmppos + 2;
}
tmpposの場合:= 1から長さ(tmpstr)
始める
アセパレーターのtmpstr [tmppos]の場合
壊す;
終わり;
tmppos:= tmppos -1;
// {todo:-oghs最後のパラメーター解析を正しく修正した}
if(tmppos = 0)および(avalue <> '')then
tmppos:= length(avalue);
aword:= copy(avalue、result + 1、tmppos);
結果:= result + tmppos;
終わり;
クラス関数tString.hashcode(avalue:string):integer;
var
I:整数;
tmpvalue:整数;
始める
tmpValue:= 0;
i:= 1 to System.length(avalue)do
始める
tmpvalue:= 3 * tmpvalue + ord(avalue [i]);
終わり;
結果:= tmpValue;
終わり;
クラス関数TString.isallchinese(AST:String):Boolean;
var
I:整数;
始める
結果:= true;
i:= 1から長さ(astr)do
始める
byteType(astr、i)= mbsinglebyteの場合
始める
結果:= false;
壊す;
終わり;
終わり;
終わり;
クラス関数tString.isallenglish(astr:string):boolean;
var
I:整数;
始める
結果:= true;
i:= 1から長さ(astr)do
始める
ByteType(ASTR、i)<> mbsingleByteの場合
始める
結果:= false;
壊す;
終わり;
終わり;
終わり;
クラス関数tString.lastCher(avalue:string):char;
始める
結果:= avalue [system.length(avalue)];
終わり;
クラス関数tString.Left(avalue:string; alength:integer):string;
始める
結果:= copy(avalue、1、alength);
終わり;
クラス関数tString.right(avalue:string; alength:integer):string;
始める
結果:= strutils.rightstr(avalue、alength);
終わり;
クラス関数tString.setString(var s:string; buffer:pchar;
len:integer):string;
始める
System.setString(s、buffer、len);
結果:= s;
終わり;
クラス関数tstring.stringin(avalue:string;
Avalues:文字列の配列):boolean;
var
I:整数;
始める
結果:= false;
i:= low(avalues)〜high(avalues)for
始める
大文字(avalue)=大文字(avalues [i])の場合
始める
結果:= true;
壊す;
終わり;
終わり;
終わり;
クラス関数tString.Stringofchar(Ch:char; count:integer):string;
始める
結果:= System.StringOfCher(CH、COUNT);
終わり;
クラス関数TString.StringReplace(const S、OldPattern、
newpattern:文字列;フラグ:TreplaceFlags):string;
始める
結果:= sysutils.stringReplace(s、oldpattern、newpattern、flags);
終わり;
クラス関数TString.StringTocharset(Avalue:String):tcharset;
var
I:整数;
始める
結果:= [];
i:= 1から長さ(avalue)do
始める
結果:= result + [avalue [i]];
終わり;
終わり;
関数tstring.tolowercase:string;
始める
結果:= lowercase(ftext);
終わり;
関数tstring.touppercase:string;
始める
結果:=大文字(ftext);
終わり;
クラス関数tString.valueof(avalue:boolean):string;
始める
Avalueの場合
結果:= 'はい'
それ以外
結果:= 'いいえ';
終わり;
クラス関数tString.valueof(avalue:string):boolean;
始める
結果:= stringin(avalue、['yes'、 'yes'、 'ok']);
終わり;
クラス関数tString.getFirstWord(avalue:string; var aword:string;
aseparator:string):整数;
始める
結果:= getFirstWord(Avalue、Aword、StringTocharset(aseparator));
終わり;
クラス関数tString.getAllword(avalue、aseparator:string):tstringlist;
var
tmplist:tstringlist;
tmpword:string;
始める
tmplist:= tstringlist.create;
長さ(avalue)> 0はします
始める
tmpword:= '';
delete(avalue、1、getFirstWord(avalue、tmpword、aseparator));
tmpword <> ''の場合
tmplist.add(tmpword)
それ以外
壊す;
終わり;
結果:= tmplist;
終わり;
クラス関数tString.updatesEntence(aoldstring、aupdatesource、
aupdatestring、asentenceseparator、awordseparator:string):string;
var
tmpsentence:string;
tmpword:string;
tmpword1:string;
I:整数;
tmpresult:string;
始める
//最初の文を取得します
tmpsentence:= aoldstring;
tmpresult:= '';
長さ(tmpsentence)> 0はします
始める
i:= getFirstWord(tmpsentence、tmpword、asentenceseparator);
tmpresult:= tmpresult + left(tmpsentence、i -length(tmpword));
delete(tmpsentence、1、i);
tmpword <> ''の場合
始める
i:= getFirstWord(tmpword、tmpword1、awordseparator);
tmpresult:= tmpresult + left(tmpword、i -length(tmpword1));
比較(tmpword1、aupdatesource)の場合
始める
tmpresult:= tmpresult + aupdatestring;
終わり
それ以外
始める
tmpresult:= tmpresult + tmpword;
終わり;
終わり;
終わり;
tmpresult:= deleteprefix(tmpresult、[''、 '、']);
tmpresult:= deletesuffix(tmpresult、[''、 '、']);
tmpresult:= deleterepeat(tmpresult、 '、'、 '');
tmpresult:= deleterepeat(tmpresult、 ''、 '');
結果:= tmpresult;
終わり;
クラス関数tString.deleterepeat(aoldstring:string; adeletestring、
arepeat:char):文字列;
var
I:整数;
tmpfind1:boolean;
始める
tmpfind1:= false;
i:= length(aoldstring)down to 1 do
始める
tmpfind1の場合
始める
AloldString [i] = adeleTestringの場合
削除(aoldstring、i、1)
それ以外
始める
AloldString [i] = arepeatの場合
続く;
tmpfind1:= aoldString [i] = adeletestring;
終わり;
終わり
それ以外
始める
adeletestring <> arepeatの場合
AloldString [i] = arepeatの場合
続く;
tmpfind1:= aoldstring [i] = adeletestring
終わり;
終わり;
結果:= aoldstring;
終わり;
クラス関数tstring.deletesuffix(avalue:string;
固定ストリング:tcharset):文字列;
始める
while system.length(avalue)> 0 do
始める
avalue [system.length(avalue)]の場合、固定ストリングで
delete(avalue、system.length(avalue)、1)
それ以外
壊す;
終わり;
結果:= avalue;
終わり;
クラス手順tstring.getallword(avalue、aseparator:string;
AstringList:tstrings);
var
tmpword:string;
始める
AstringList = nilの場合
AstringList:= tstringlist.create;
長さ(avalue)> 0はします
始める
tmpword:= '';
delete(avalue、1、getFirstWord(avalue、tmpword、aseparator));
tmpword <> ''の場合
astringlist.add(tmpword)
それ以外
壊す;
終わり;
終わり;
クラス関数tString.ifthen(aexpression:boolean; aTrue、
afalse:string):string;
始める
axpressionの場合
結果:= Atrue
それ以外
結果:= afalse;
終わり;
クラス関数tString.absolutetorElate(aabsolute、
Acurrent:String):文字列;
var
tmpsimilarstring:string;
aoldfile:string;
I:整数;
TMPPOS:整数;
始める
//変換後、それは形成されます.../../a.ini;
//同じドライブにない場合、絶対パスに直接戻ります。
extractfiledrive(aabsolute)<> extractfiledrive(acurrent)の場合
結果:= aabsolute
それ以外
始める
tmpsimilarstring:= '';
aoldfile:= aabsolute;
aabsolute:= extractfilepath(aabsolute);
tmppos:=同様のポジション(aabsolute、acurrent);
delete(aoldfile、1、tmppos -1);
削除(acurrent、1、tmppos -1);
for i:= 0にgetcharnum(acurrent、 '/')-1 do
始める
tmpsimilarstring:= tmpsimilarstring + '../';
終わり;
結果:= tmpsimilarstring + aoldfile;
終わり;
終わり;
クラス関数tString.RelatetoAbsolute(arate、acurrent:string):string;
var
tmpsimilarstring:string;
tmprootcount:整数;
I:整数;
始める
長さ(arelate)> 2の場合
始める
arelate [2] = ':' thenの場合
始める
結果:= arelate;
出口;
終わり;
終わり;
tmpsimilarstring:= '';
tmprootcount:= 0;
本当ですが
始める
Leftstr(arelate、3)= '../' Thenの場合
始める
Inc(tmprootcount);
削除(arelate、1、3);
終わり
それ以外
壊す;
終わり;
tmpsimilarString:= reversestring(extractfilepath(acurrent));
i:= 0からtmprootcount do
始める
delete(tmpsimilarstring、1、pos( '/'、tmpsimilarstring));
終わり;
結果:= Reversestring(tmpsimilarstring) + arelate;
終わり;
クラス関数tString.similarposition(aone、atwo:string):integer;
var
I:整数;
マックス:整数;
始める
if length(aone)<length(atwo)then
max:= length(aone)
それ以外
max:= length(atwo);
i:= 1からmax do
始める
aone [i] <> atwo [i] thenの場合
壊す;
終わり;
結果:= i;
終わり;
クラス関数TString.getCharnum(Astring:String; Achar:char):integer;
var
I:整数;
始める
結果:= 0;
i:= 1から長さ(攻撃)の場合
始める
astring [i] = acharの場合
inc(result);
終わり;
終わり;
クラス手順tstring.getallwordwithall(avalue、aseparator:string;
AstringList:tstrings);
var
TMPI:整数;
TMPPOS:整数;
始める
AstringList = nilの場合
AstringList:= tstringlist.create;
tmppos:= 0;
長さ(avalue)> 0はします
始める
TMPIの場合:= 1から長さ(avalue)
始める
tmppos:= pos(avalue [tmppos]、aseparator);
tmppos> 0の場合
始める
astringlist.add(copy(avalue、1、tmppos -1));
astringlist.add(copy(avalue、tmppos、1));
delete(avalue、1、tmppos);
壊す;
終わり
終わり;
終了します
終わり;
クラス関数TSTRING.TOLOWERCASE(Astring:String):String;
始める
結果:=小文字(攻撃);
終わり;
クラス関数TString.TOUPPERCASE(Astring:String):String;
始める
結果:=大文字(攻撃);
終わり;
クラス関数TSTRING.INDEXOF(Astring、Asubstring:String):整数;
始める
結果:= pos(asubstring、astring);
終わり;
クラス関数TString.Zerotoint(Astring:String):整数;
始める
TRIM(Astring)= ''の場合
攻撃:= '0';
結果:= strtoint(astring);
終わり;
クラス関数tString.zerotofloat(astring:string):double;
始める
TRIM(Astring)= ''の場合
攻撃:= '0.0';
結果:= strtofloat(astring);
終わり;
クラス関数tString.sametext(Astring、Astring1:String):Boolean;
始める
結果:= sysutils.sametext(astring、astring1);
終わり;
クラス関数TString.Reverse(Astring:String):文字列;
始める
結果:= Reversestring(Astring);
終わり;
クラス関数TString.isValidip(const s:string):boolean;
var
J、I:整数;
LTMP:文字列;
始める
結果:= true;
ltmp:= trim(s);
i:= 1〜4の場合は開始します
j:= strtointdef(fetch(ltmp、 '。')、-1);
結果:=結果と(j> -1)および(j <256);
結果でない場合は、開始します
壊す;
終わり;
終わり;
終わり;
クラス関数TString.ZerotoStr(Astring:String):String;
始める
TRIM(Astring)= ''の場合
結果:= '0'
それ以外
結果:=アストリング;
終わり;
クラス関数tString.fillString(achar:char; alength:integer):string;
var
I:整数;
始める
結果:= '';
i:= 1からalength do // iterate
始める
結果:=結果 + achar;
終了; //
終わり;
クラス関数TString.StuffString(const atext:string; astart、
alength:cordinal; const asubtext:string;
始める
結果:= strutils.stuffstring(atext、astart、alength、asubtext);
終わり;
クラス関数tString.getNextString(var sourcestring:string;
asplitchar:string):string;
var
TMPPOS:整数;
始める
tmppos:= pos(asplitchar、sourcestring);
tmppos = 0の場合
始める
結果:= sourcestring;
Sourcestring:= ''
終わり
それ以外
始める
結果:= tstring.left(sourcestring、tmppos -1);
delete(sourcestring、1、tmppos);
終わり;
終わり;
{Tinteger}
クラス関数tinteger.inttostr(ainteger:integer):string;
始める
結果:= sysutils.inttostr(ainteger);
終わり;
クラス関数tinteger.hashcode(ainteger:integer):integer;
始める
結果:= ainteger;
終わり;
クラス関数tinteger.inttostr(ainteger:int64):string;
始める
結果:= sysutils.inttostr(ainteger);
終わり;
クラス関数tinteger.isvalidint(astring:string):boolean;
始める
結果:= true;
試す
strtoint(astring);
を除外する
結果:= false;
終わり;
終わり;
クラス関数tinteger.isvalidint64(astring:string):boolean;
始める
結果:= true;
試す
strtoint(astring);
を除外する
結果:= false;
終わり;
終わり;
クラス関数tinteger.maxint:integer;
始める
結果:= system.maxint;
終わり;
クラス関数tinteger.maxlongint:integer;
始める
結果:= system.maxlongint;
終わり;
クラス関数tinteger.inttobin(ainteger:cardinal):string;
var
I:整数;
始める
setLength(result、32);
i:= 1から32の場合
始める
if((ainteger shl(i-1))shr 31)= 0 then
結果[i]:= '0'
それ以外
結果[i]:= '1';
終わり;
終わり;
クラス関数tinteger.inttohex(ainteger:integer):string;
始める
結果:= sysutils.inttohex(ainteger、0);
終わり;
クラス関数tinteger.hextoint(astring:string):integer;
始める
tstring.left(astring、1)= '$' thenの場合
結果:= strtoint(astring)
それ以外
結果:= strtoint( '$' + astring);
終わり;
クラス関数tinteger.makeserialno(ainteger、adigit:integer):string;
var
TMPSTR:文字列;
I:整数;
始める
tmpstr:= '';
i:= 0 to adigit -1 do // iterate
始める
tmpstr:= tmpstr + '0';
終了; //
結果:= formatfloat(tmpstr、ainteger);
終わり;
{tfloat}
クラス関数tfloat.floattomoney(const value:double; round:boolean):string;
始める
//金額はデフォルトで丸められます
終わり;
クラス関数tfloat.isvalidfloat(astring:string):boolean;
始める
結果:= true;
試す
strtofloat(astring);
を除外する
結果:= false;
終わり;
終わり;
クラス関数tfloat.maxdouble:double;
始める
結果:= 1.7e+308;
終わり;
クラス関数tfloat.maxextended:拡張;
始める
結果:= 1.1E+4932;
終わり;
クラス関数tfloat.mindouble:double;
始める
結果:= 5.0E-324;
終わり;
クラス関数tfloat.minextended:拡張;
始める
結果:= 3.4E-4932;
終わり;
クラス関数tfloat.samevalue(const A、b:single;
Epsilon:シングル):Boolean;
始める
結果:= math.samevalue(a、b、epsilon);
終わり;
クラス関数tfloat.samevalue(const A、b:double;
Epsilon:double):boolean;
始める
結果:= math.samevalue(a、b、epsilon);
終わり;
クラス関数tfloat.samevalue(const A、b:拡張;
Epsilon:拡張):boolean;
始める
結果:= math.samevalue(a、b、epsilon);
終わり;
{tboolean}
クラス関数tboolean.booltostr(aboolean:boolean):string;
始める
アブール人なら
結果:= 'true'
それ以外
結果:= 'false';
終わり;
クラス関数tboolean.Strtobool(astring:string):boolean;
始める
大文字の場合(アストリング)= 'true'次に
結果:= true
それ以外
結果:= false;
終わり;
終わり。