




已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
*系統(tǒng)實用例程*Delphi / Kylix 跨平臺運行時庫(System Utilities)Copyright (c) 1995-2002 Borland Softwrare Corporation*SysUtils單元;1. 常量(Const)1) 文件打開方式$以下用于Linux環(huán)境fmOpenRead = O_RDONLY;fmOpenWrite = O_WRONLY;fmOpenReadWrite = O_RDWR;/ fmShareCompat 不被支持fmShareExclusive = $0010;fmShareDenyWrite = $0020;/ fmShareDenyRead 不被支持fmShareDenyNone = $0030;$ENDIF$以下用于MsWindowsfmOpenRead = $0000;fmOpenWrite = $0001;fmOpenReadWrite = $0002;fmShareCompat = $0000 platform; / DOS 兼容模式不portablefmShareExclusive = $0010;fmShareDenyWrite = $0020;fmShareDenyRead = $0030 platform; / 只寫在所有平臺上都不被支持fmShareDenyNone = $0040;$ENDIF2) 文件屬性faReadOnly = $00000001 platform;faHidden = $00000002 platform;faSysFile = $00000004 platform;faVolumeID = $00000008 platform;faDirectory = $00000010;faArchive = $00000020 platform;faSymLink = $00000040 platform;faAnyFile = $0000003F;3) 時間單位HoursPerDay = 24; 每天24小時MinsPerHour = 60; 每小時60分SecsPerMin = 60; 每分鐘60秒MSecsPerSec = 1000; 每秒1000毫秒MinsPerDay = HoursPerDay * MinsPerHour; 每天的分鐘數(shù)SecsPerDay = MinsPerDay * SecsPerMin; 每天秒數(shù)MSecsPerDay = SecsPerDay * MSecsPerSec; 每天毫秒數(shù)DateDelta = 693594; 每天介于 1/1/0001 和 12/31/1899 之間UnixDateDelta = 25569; 介于TDateTime 基數(shù)(12/31/1899) 和Unix time_t 基數(shù)(1/1/1970)之間的天數(shù) 2. 類型定義(type)TSysCharSet = set of Char; /設(shè)置字符類型標(biāo)準(zhǔn):所有ANSI字符的集合TIntegerSet = set of 0.SizeOf(Integer) * 8 - 1; 設(shè)定整數(shù)的訪問類型:0-31的整數(shù)集合 /類型轉(zhuǎn)換/ WordRec使訪問一個Word類型變量或者其他16位變量(SmallInt)的高位和低位字節(jié)變得更容易WordRec = packed record case Integer of0: (Lo, Hi: Byte);1: (Bytes: array 0.1 of Byte);end;LongRec使訪問一個LongWord類型變量或者其它32位變量(Single)高位和低位字變得更容易。LongRec = packed recordcase Integer of0: (Lo, Hi: Word);1: (Words: array 0.1 of Word);2: (Bytes: array 0.3 of Byte);end;Int64Rec使訪問一個Int64類型變量或者其它64位變量(Double)高位和低位字變得更容易。Int64Rec = packed recordcase Integer of0: (Lo, Hi: Cardinal);1: (Cardinals: array 0.1 of Cardinal);2: (Words: array 0.3 of Word);3: (Bytes: array 0.7 of Byte);end;/一般數(shù)組PByteArray = TByteArray;TByteArray = array0.32767 of Byte;PWordArray = TWordArray;TWordArray = array0.16383 of Word;TProcedure = procedure; /一般程序指針TFileName = type string; /一般文件類型TSearchRec = record /用于搜索記錄的結(jié)構(gòu)(由函數(shù) FindFirst, FindNext, 和 FindClose 使用)Time: Integer;Size: Integer;Attr: Integer;Name: TFileName;ExcludeAttr: Integer;$以下用于MsWindows平臺FindHandle: THandle platform;FindData: TWin32FindData platform;$ENDIF$以下用于Linux環(huán)境Mode: mode_t platform;FindHandle: Pointer platform;PathOnly: String platform;Pattern: String platform;$ENDIFend;TFloatValue = (fvExtended, fvCurrency); 浮點類型格式化代碼TFloatFormat = (ffGeneral, ffExponent, ffFixed, ffNumber, ffCurrency); FloatToText格式化代碼TFloatRec = packed record / FloatToDecimal 結(jié)果的記錄型結(jié)構(gòu)Exponent: Smallint;Negative: Boolean;Digits: array0.20 of Char;end;TTimeStamp = record /日期和時間的記錄結(jié)構(gòu)Time: Integer; 從0:00開始的的毫秒數(shù)Date: Integer; 從1/1/0001以后的天的加數(shù) end;TMbcsByteType = (mbSingleByte, mbLeadByte, mbTrailByte); 多字節(jié)字符集的字節(jié)類型TSysLocale = packed record /本地系統(tǒng)信息記錄類型DefaultLCID: Integer;PriLangID: Integer;SubLangID: Integer;FarEast: Boolean;MiddleEast: Boolean;end;$以下用于MsWindows平臺TLangRec = packed record /被使用的語言FName: string;FLCID: LCID;FExt: string;end;TLanguages = class /存儲系統(tǒng)支持的語言private.Public.end platform;$ENDIF以下用于Linux環(huán)境TEraRange = recordStartDate : Integer; / 從12/31/1899 (TDateTime 基數(shù))的全部天數(shù)EndDate : Integer; /從12/31/1899 (TDateTime 基數(shù))的全部天數(shù)Direction : Char;end;$ENDIFException = class(TObject) /異常private.public.end;ExceptClass = class of Exception;EAbort = class(Exception);EHeapException = class(Exception)privateAllowFree: Boolean;publicprocedure FreeInstance; override;end;EOutOfMemory = class(EHeapException);EInOutError = class(Exception)publicErrorCode: Integer;end;以下用于MsWindows平臺PExceptionRecord = TExceptionRecord;TExceptionRecord = recordExceptionCode: Cardinal;ExceptionFlags: Cardinal;ExceptionRecord: PExceptionRecord;ExceptionAddress: Pointer;NumberParameters: Cardinal;ExceptionInformation: array0.14 of Cardinal;end;$ENDIFEExternal = class(Exception)public$以下用于MsWindows平臺ExceptionRecord: PExceptionRecord platform;$ENDIF$以下用于Linux環(huán)境ExceptionAddress: LongWord platform;AccessAddress: LongWord platform;SignalNumber: Integer platform;$ENDIFend;EExternalException = class(EExternal);EIntError = class(EExternal);EDivByZero = class(EIntError);ERangeError = class(EIntError);EIntOverflow = class(EIntError);EMathError = class(EExternal);EInvalidOp = class(EMathError);EZeroDivide = class(EMathError);EOverflow = class(EMathError);EUnderflow = class(EMathError);EInvalidPointer = class(EHeapException);EInvalidCast = class(Exception);EConvertError = class(Exception);EAccessViolation = class(EExternal);EPrivilege = class(EExternal);EStackOverflow = class(EExternal) end deprecated;EControlC = class(EExternal);以下用于Linux環(huán)境EQuit = class(EExternal) end platform;$ENDIF以下用于Linux環(huán)境ECodesetConversion = class(Exception) end platform;$ENDIFEVariantError = class(Exception);EPropReadOnly = class(Exception);EPropWriteOnly = class(Exception);EAssertionFailed = class(Exception);$IFNDEF PC_MAPPED_EXCEPTIONSEAbstractError = class(Exception) end platform;$ENDIFEIntfCastError = class(Exception);EInvalidContainer = class(Exception);EInvalidInsert = class(Exception);EPackageError = class(Exception);EOSError = class(Exception)publicErrorCode: DWORD;end;以下用于MsWindows平臺EWin32Error = class(EOSError)end deprecated;$ENDIFESafecallException = class(Exception);以下用于Linux環(huán)境3. 符號(Signals)外部異常或符號由Delphi RTL默認(rèn)被轉(zhuǎn)換到語言異常。在Linux下,一個Delphi應(yīng)用程序安裝符號處理機來誘捕原始符號并轉(zhuǎn)換他們。Delphi庫默認(rèn)不安裝處理機。所以你要是執(zhí)行一個標(biāo)準(zhǔn)庫,類似Apache DSO, 你想要將符號轉(zhuǎn)換到能夠捕獲的語言異常,就必須人工安裝符號鉤,用Delphi RTL提供的接口。對于大多數(shù)的庫,安裝符號處理機是恰當(dāng)簡便的。在初始時間調(diào)用HookSignal(RTL_SIGDEFAULT),在關(guān)閉時調(diào)用UnhookSignal(RTL_SIGNALDEFAULT),將會為一組符號安裝處理機,Delphi應(yīng)用程序被RTL正常鉤住。有時候會有一些使以上的初始化不能工作的事情。適當(dāng)?shù)脑O(shè)置一個符號處理機的行為,然后當(dāng)整理完后恢復(fù)到以前狀態(tài)。如果你有兩個庫lib1和lib2,lib1安裝了符號處理機,然后lib2也安裝了一個,如果要恢復(fù)符號處理機則那些庫就必須以適當(dāng)?shù)拇涡蛐遁d,或者符號處理機能夠被留在矛盾而致命的地方。為了防止這種可能,允許你無論在何種情況下在外部庫中發(fā)現(xiàn)這種行為都能較好的管理符號處理機,我們提供了一組4個接口來容許你在緊急事件中剪裁Delphi符號處理機掛鉤/脫鉤,他們是:InquireSignalAbandonSignalHandlerHookSignalUnhookSignalInquireSignal 允許你看符號處理機的狀態(tài),也就是你能發(fā)現(xiàn)在你之下抓取它的人。AbandonSignalHandler 告訴RTL從不脫鉤一個特定的符號處理機。如果你發(fā)現(xiàn)一個符號處理機將要不安全的返回到以前狀態(tài)就需要使用它。例如,如果前一個符號處理機被一個后來被卸載的庫安裝。HookSignal/UnhookSignal 設(shè)置符號處理機映射某個信號為語言異常。其它的看下面的InquireSignal等注釋。constRTL_SIGINT = 0; / 用戶中斷User interrupt (SIGINT)RTL_SIGFPE = 1; / 浮點異常(SIGFPE)RTL_SIGSEGV = 2; / 分割違背 (SIGSEGV)RTL_SIGILL = 3; /非法指令(SIGILL)RTL_SIGBUS = 4; / 總線Bus 錯誤 (SIGBUS)RTL_SIGQUIT = 5; / 用戶中斷(SIGQUIT)RTL_SIGLAST = RTL_SIGQUIT; / 已用于內(nèi)部,不能用RTL_SIGDEFAULT = -1; / 意味著我們捕獲一組符號Means all of a set of signals that the we capture/ normally. 這是當(dāng)前全部進(jìn)程/ signals. 你不能傳遞這個到InquireSignal.type/TSignalState 給定的符號處理機的狀態(tài),由InquireSignal送回。看以下InquireSignal。TSignalState = (ssNotHooked, ssHooked, ssOverridden);var如果DeferUserInterrupts設(shè)置,我們不能引發(fā)SIGINT 、SIGQUIT 這樣的異常,而是當(dāng)信號到達(dá)時設(shè)置SIGINTIssued或SIGQUITIssued,并且要忍受OS發(fā)出的信號。這個引起GUI 應(yīng)用程序偶然的延遲實際信號處理直到它是安全DeferUserInterrupts: Boolean;SIGINTIssued: Boolean;SIGQUITIssued: Boolean;$ENDIF$以下用于Linux環(huán)境constMAX_PATH = 4095; / From /usr/include/linux/limits.h PATH_MAX$ENDIFvar 空字串和null 字符指針.這些常量只為向后兼容而提供。 EmptyStr: string = ;NullStr: PString = EmptyStr;EmptyWideStr: WideString = ;NullWideStr: PWideString = EmptyWideStr;$以下用于MsWindows平臺Win32 平臺標(biāo)識符,將會是下列數(shù)值之一:VER_PLATFORM_WIN32sVER_PLATFORM_WIN32_WINDOWSVER_PLATFORM_WIN32_NTWin32Platform: Integer = 0; /數(shù)值看WINDOWS.PASWin32 OS 版本信息見TOSVersionInfo.dwMajorVersion/dwMinorVersion/dwBuildNumberWin32MajorVersion: Integer = 0;Win32MinorVersion: Integer = 0;Win32BuildNumber: Integer = 0;Win32CSDVersion: string = ; / Win32 OS 以外版本信息字符串見TOSVersionInfo.szCSDVersion4. 實用函數(shù)過程1) Win32 OS 版本測試函數(shù)function CheckWin32Version(AMajor: Integer; AMinor: Integer = 0): Boolean;GetFileVersion 返回一個32位的文件的二進(jìn)制版本數(shù),它一般有助版本號和輔版本號,一般沒有release 或build 號。 如果失敗,則返回Cardinal(-1)function GetFileVersion(const AFileName: string): Cardinal;$ENDIF2) 貨幣和日期/時間格式化選項這些變量初始數(shù)值用Win32 API 中的GetLocaleInfo 函數(shù)從系統(tǒng)注冊表取得,每個變量指定常量LOCALE_XXXX的來描述這些初始值CurrencyString 定義浮點數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)后的需用的貨幣符號,初始值來自于LOCALE_SCURRENCY.CurrencyFormat -定義浮點數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)后的貨幣符號的位置和分離程度,可能的值為:0 = $11 = 1$2 = $ 13 = 1 $初始值來自于LOCALE_ICURRENCY.NegCurrFormat 定義負(fù)數(shù)浮點數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)后的貨幣格式,可能的值為:0 = ($1) 4 = (1$) 8 = -1 $ 12 = $ -11 = -$1 5 = -1$ 9 = -$ 1 13 = 1- $2 = $-1 6 = 1-$ 10 = 1 $- 14 = ($ 1)3 = $1- 7 = 1$- 11 = $ 1- 15 = (1 $)初始值來自于LOCALE_INEGCURR.ThousandSeparator 多于一千時的千分位分離符位于數(shù)值的左邊,初始值來自于LOCALE_STHOUSAND. #0 值即使有此指示符也不應(yīng)當(dāng)輸出指示符DecimalSeparator 用于分離一個數(shù)的小數(shù)部分的整數(shù),其初值來自LOCALE_SDECIMAL. DecimalSeparator 必須是個非零值CurrencyDecimals 貨幣值中小數(shù)點右邊的小數(shù)位數(shù),初值來自LOCALE_ICURRDIGITS.DateSeparator 分離符:用于分離日期數(shù)值的年、月、日部分,初值來自于LOCATE_SDATE.ShortDateFormat 用于將日期型數(shù)值轉(zhuǎn)換為適合編輯的短字符串。對日期和時間格式化字符串的完整描述,請查閱FormatDate 函數(shù)。短日期格式應(yīng)當(dāng)只使用日期分離符和m, mm, d, dd, yy, 和 yyyy 格式特定。初值來自于LOCALE_SSHORTDATE。LongDateFormat -用于將日期型數(shù)值轉(zhuǎn)換為適合顯示而不是編輯的長字符串。對日期和時間格式化字符串的完整描述,請查閱FormatDate 函數(shù)。其初值來自于LOCALE_SLONGDATE。TimeSeparator 用于分離時間型數(shù)值的時、分、秒。其初值來自于LOCALE_STIME.。TimeAMString 時間后綴用于在12小時制上午的后綴,初值來自于LOCALE_S1159。TimePMString 12小時制下午的后綴,初值來自于LOCALE_S2359。ShortTimeFormat 此格式化字符用于時間值轉(zhuǎn)換為只有小時和分鐘的短字符串。其默認(rèn)值從LOCALE_ITIME 和 LOCALE_ITLZERO計算得到LongTimeFormat -此格式化字符用于時間值轉(zhuǎn)換為含有小時、分鐘和秒的長短字符串。其默認(rèn)值從LOCALE_ITIME 和 LOCALE_ITLZERO計算得到。ShortMonthNames 字符串?dāng)?shù)組包含有短月份名,格式字串中的 mmm 特定格式被傳送給FormatDate 會使得短月份名被替換。其默認(rèn)值從 LOCALE_SABBREVMONTHNAME 系統(tǒng)本地入口取出。LongMonthNames -字符串?dāng)?shù)組包含有長月份名。格式化字串中的mmmm 格式特定符被傳送給FormatDate 會使得長月份名被替換。其缺省值是從LOCALE_SMONTHNAME 系統(tǒng)本地入口取出。ShortDayNames -字符串?dāng)?shù)組包含有短天名,格式字串中的 ddd特定格式被傳送給FormatDate 會使得短天名被替換。其默認(rèn)值取自于LOCALE_SABBREVDAYNAME 系統(tǒng)本地入口。LongDayNames -字符串?dāng)?shù)組包含有長天名,格式字串中的 dddd特定格式被傳送給FormatDate 會使得長天名被替換。其默認(rèn)值取自于LOCALE_SDAYNAME 系統(tǒng)本地入口。ListSeparator 字符用于分開一個列表的項目,其初值來自于LOCALE_SLIST。TwoDigitYearCenturyWindow 當(dāng)將字符型日期轉(zhuǎn)換為數(shù)字日期時,世紀(jì)被添加到兩位的年中。這個值在提取世紀(jì)值之前被從本年度減去。這能延長現(xiàn)有的存依賴于2位數(shù)年數(shù)據(jù)登錄項的應(yīng)用程序壽命。對2000年(Y2k) 問題的最好的解決辦法是不再接受兩位數(shù)的年,在數(shù)據(jù)登錄項中只接受4位的年,從而根本上消除世紀(jì)的模糊性示例:Current TwoDigitCenturyWindow Century StrToDate() of:Year Value Pivot 01/01/03 01/01/68 01/01/50-1998 0 1900 1903 1968 19502002 0 2000 2003 2068 20501998 50 (default) 1948 2003 1968 19502002 50 (default) 1952 2003 1968 20502020 50 (default) 1970 2003 2068 2050varCurrencyString: string;CurrencyFormat: Byte;NegCurrFormat: Byte;ThousandSeparator: Char;DecimalSeparator: Char;CurrencyDecimals: Byte;DateSeparator: Char;ShortDateFormat: string;LongDateFormat: string;TimeSeparator: Char;TimeAMString: string;TimePMString: string;ShortTimeFormat: string;LongTimeFormat: string;ShortMonthNames: array1.12 of string;LongMonthNames: array1.12 of string;ShortDayNames: array1.7 of string;LongDayNames: array1.7 of string;SysLocale: TSysLocale;TwoDigitYearCenturyWindow: Word = 50;ListSeparator: Char;3) 線程安全流通和日期/時間格式化TFormatSettings 記錄型被設(shè)計成允許線程安全格式化,相同的全局變量描述在上面。每個使用全局變量被重載的格式化例程都需要TformatSettings型的附加參數(shù)。一個TFormatSettings 記錄型在使用之前必須有內(nèi)容。使用GetLocaleFormatSettings函數(shù)能夠使其基于給定環(huán)境。注意一些格式指定符仍然需要指定線程現(xiàn)場設(shè)置(類似于period/era 名字)。typeTFormatSettings = recordCurrencyFormat: Byte;NegCurrFormat: Byte;ThousandSeparator: Char;DecimalSeparator: Char;CurrencyDecimals: Byte;DateSeparator: Char;TimeSeparator: Char;ListSeparator: Char;CurrencyString: string;ShortDateFormat: string;LongDateFormat: string;TimeAMString: string;TimePMString: string;ShortTimeFormat: string;LongTimeFormat: string;ShortMonthNames: array1.12 of string;LongMonthNames: array1.12 of string;ShortDayNames: array1.7 of string;LongDayNames: array1.7 of string;TwoDigitYearCenturyWindow: Word;end;constMaxEraCount = 7;varEraNames: array 1.MaxEraCount of string;EraYearOffsets: array 1.MaxEraCount of Integer;以下用于Linux環(huán)境EraRanges : array 1.MaxEraCount of TEraRange platform;EraYearFormats: array 1.MaxEraCount of string platform;EraCount: Byte platform;$ENDIFconstPathDelim = $IFDEF MSWINDOWS ; $ELSE /; $ENDIFDriveDelim = $IFDEF MSWINDOWS :; $ELSE ; $ENDIFPathSep = $IFDEF MSWINDOWS ; $ELSE :; $ENDIF以下用于MsWindows平臺function Languages: TLanguages;$ENDIF4) 內(nèi)存管理例程。AllocMem-在堆上分配給定大小的塊。被分配的緩沖區(qū)設(shè)置為0。若要消除這個緩沖區(qū)請使用FreeMem 標(biāo)準(zhǔn)過程。function AllocMem(Size: Cardinal): Pointer;5) 退出過程處理把給定的過程添加到運行時庫的退出過程列表中。當(dāng)應(yīng)用程序終止時, 它的退出過程被執(zhí)行,執(zhí)行順序是最后的過程先運行,也就是后進(jìn)先出。procedure AddExitProc(Proc: TProcedure);6) 字符串處理例程function NewStr(const S: string): PString; deprecated; /在堆上分配一個字串,只是為向后兼容而提供。procedure DisposeStr(P: PString); deprecated; /消除一個由NewStr 分配的字串指針。只是為向后兼容而提供procedure AssignStr(var P: PString; const S: string); deprecated; /賦值一個新的動態(tài)的已分配字串到給定的字串指針。只是為向后兼容而提供procedure AppendStr(var Dest: string; const S: string); deprecated; /添加 S 到Dest 的末尾.(Dest := Dest + S)。只是為向后兼容而提供。function UpperCase(const S: string): string; /轉(zhuǎn)換給定的ASCII字符為大寫,它只對7位的ASCII字符中的a - z 起作用。 對于8位的國際字符集用AnsiUpperCase。function LowerCase(const S: string): string; /轉(zhuǎn)換給定的ASCII字符為小寫,它只對7位的ASCII字符中的A - Z 起作用。 對于8位的國際字符集用AnsiUpperCase。function CompareStr(const S1, S2: string): Integer; /比較字串 S1 和 S2, 有大小寫敏感(case-sensitivity). 如果S1S2,返回值大小于。這個比較操作是基于每個字符的8位序數(shù)值并且不受當(dāng)前的用戶環(huán)境影響function CompareMem(P1, P2: Pointer; Length: Integer): Boolean; assembler; /比較由P1和P2分別指示的Length長度的內(nèi)存區(qū)域。如果相同則返回True 。function CompareText(const S1, S2: string): Integer; /比較S1 和S2, 沒有大小寫敏感(case-sensitivity)。返回值與CompareStr類同。這個比較操作是基于每個字符的8位序數(shù)值(a.z 變?yōu)锳.Z 后)并且不受當(dāng)前的用戶環(huán)境影響function SameText(const S1, S2: string): Boolean; /比較S1 和S2,沒有大小寫敏感。如果S1=S2,返回true ,也就是如果CompareText 將返回0。SameText 象CompareText一樣有8位限制 。function AnsiUpperCase(const S: string): string; /轉(zhuǎn)換給定字串中的全部字符為大寫,這個轉(zhuǎn)換使用用戶環(huán)境。function AnsiLowerCase(const S: string): string; /轉(zhuǎn)換給定字串中的全部字符為小寫,這個轉(zhuǎn)換使用用戶環(huán)境。function AnsiCompareStr(const S1, S2: string): Integer; 比較S1和S2,有大小寫敏感。這個比較操作受控于用戶當(dāng)前環(huán)境。返回值與CompareStr相同。function AnsiSameStr(const S1, S2: string): Boolean; /比較S1和S2,有大小寫敏感。這個比較操作受控于用戶當(dāng)前環(huán)境。如果AnsiCompareStr返回0,則它返回True。function AnsiCompareText(const S1, S2: string): Integer; /比較S1和S2,沒有大小寫敏感。這個比較操作受控于用戶當(dāng)前環(huán)境。返回值與CompareStr相同。function AnsiSameText(const S1, S2: string): Boolean; /比較S1 和S2, 沒有大小寫敏感。這個比較操作受控于用戶當(dāng)前環(huán)境。如果AnsiCompareText返回0,則它返回True。function AnsiStrComp(S1, S2: PChar): Integer; /比較S1 和S2,有大小寫敏感。這個比較操作受控于用戶當(dāng)前環(huán)境。返回值與CompareStr相同。function AnsiStrIComp(S1, S2: PChar): Integer; 比較S1和S2,沒有大小寫敏感。這個比較操作受控于用戶當(dāng)前環(huán)境。返回值與CompareStr相同。function AnsiStrLComp(S1, S2: PChar; MaxLen: Cardinal): Integer; 比較S1和S2,有大小寫敏感。最大直到MaxLen 長度。這個比較操作受控于用戶當(dāng)前環(huán)境。返回值與CompareStr相同。function AnsiStrLIComp(S1, S2: PChar; MaxLen: Cardinal): Integer; 比較S1和S2,沒有大小寫敏感。最大直到MaxLen 長度。這個比較操作受控于用戶當(dāng)前環(huán)境。返回值與CompareStr相同。function AnsiStrLower(Str: PChar): PChar; 轉(zhuǎn)換給定字串的全部字符為小寫,使用用戶當(dāng)前環(huán)境。function AnsiStrUpper(Str: PChar): PChar; 轉(zhuǎn)換給定字串的全部字符為大寫,使用用戶當(dāng)前環(huán)境。function AnsiLastChar(const S: string): PChar; 返回一個指到字串中的最后字符。這個函數(shù)支持多字節(jié)字符集function AnsiStrLastChar(P: PChar): PChar; 返回一個指到字串中的最后字符。這個函數(shù)支持多字節(jié)字符集。function WideUpperCase(const S: WideString): WideString; 轉(zhuǎn)換給定字串的全部字符為大寫。function WideLowerCase(const S: WideString): WideString; 轉(zhuǎn)換給定字串的全部字符為小寫。function WideCompareStr(const S1, S2: WideString): Integer; 比較S1 和S2,有大小寫敏感。返回值與CompareStr相同。 function WideSameStr(const S1, S2: WideString): Boolean; 比較S1 和S2,有大小寫敏感。如果WideCompareStr返回0,則它返回True。function WideCompareText(const S1, S2: WideString): Integer; 比較S1 和S2,沒有大小寫敏感。返回值與CompareStr相同。function WideSameText(const S1, S2: WideString): Boolean; 比較S1 和S2,沒有大小寫敏感。如果WideCompareText返回0,則它返回True。function Trim(const S: string): string; overload; 從給定字串中去除首尾空格和控制符。function Trim(const S: WideString): WideString; overload; 從給定字串中去除首尾空格和控制符。function TrimLeft(const S: string): string; overload; 從給定字串中去除首端空格和控制符。function TrimLeft(const S: WideString): WideString; overload; 從給定字串中去除首端空格和控制符。function TrimRight(const S: string): string; overload; 從給定字串中去除尾空格和控制符。function TrimRight(const S: WideString): WideString; overload; 從給定字串中去除尾空格和控制符。function QuotedStr(const S: string): string; 返回加引號的字串。單引號分別被插入到字串的首尾端,并且對于字串中只有一個單引號,另一個都被添加。function AnsiQuotedStr(const S: string; Quote: Char): string; 返回加給定引號字符的字串。引號分別被插入到字串的首尾端,并且字串中每個引號都是成對的。這個函數(shù)支持多字節(jié)字符集 (MBCS)。function AnsiExtractQuotedStr(var Src: PChar; Quote: Char): string; 去除字符串的首尾引號,如果源字串首字符不是引號,則返回一個空的字串。函數(shù)從源串首端復(fù)制到遇到第二個引號或第一個零(Null)字符為止。這個源參數(shù)指向首個引號后面的字符串。如果源字串不包含有相匹配的結(jié)束引號,則其被指向最終的Null字符,這個函數(shù)支持多字節(jié)字符(MBCS)。function AnsiDequotedStr(const S: string; AQuote: Char): string; 是AnsiExtractQuotedStr 函數(shù)的簡化 AdjustLineBreaks 調(diào)整在給定的字串中所有的換行符為指定的格式。當(dāng)格式是 tlbsCRLF 時,函數(shù)改變所有CR字符和LF字符為CR/LF對。 當(dāng)格式是 tlbsLF 的時候,函數(shù)改變所有的CR/LF對和CR字符為LF字符。 function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle =以下用于Linux環(huán)境 tlbsLF END Linux環(huán)境以下用于MSWINDOWS環(huán)境 tlbsCRLF END MSWINDOWS環(huán)境): string;function IsValidIdent(const Ident: string): Boolean; 若給定字串是有效的標(biāo)識符則返回
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 食品安全行業(yè)的競爭策略-洞察闡釋
- 腎虛與骨質(zhì)疏松癥肝俞穴艾灸證治思路及臨床應(yīng)用-洞察闡釋
- 城市數(shù)據(jù)挖掘與分析-洞察闡釋
- 2025至2030年中國甲硝唑陰道泡騰片行業(yè)市場行情監(jiān)測及未來趨勢研判報告
- 大功率電源及系統(tǒng)項目投資風(fēng)險評估報告
- 2025至2030年中國瓶裝礦泉水行業(yè)市場發(fā)展模式及未來前景分析報告
- 暖溫帶海洋生態(tài)系統(tǒng)中的營養(yǎng)級結(jié)構(gòu)與動力學(xué)研究-洞察闡釋
- 嬰兒用品可持續(xù)發(fā)展-洞察闡釋
- 物聯(lián)網(wǎng)技術(shù)在電網(wǎng)中的應(yīng)用-洞察闡釋
- 低空經(jīng)濟(jì)產(chǎn)業(yè)園運營管理方案
- 成人禮儀式策劃書
- 部編版八年級語文下冊實踐性作業(yè)教案
- GB/T 40516-2021J類船用法蘭連接金屬閥門的結(jié)構(gòu)長度
- GB/T 22562-2008電梯T型導(dǎo)軌
- 企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化評價表
- 學(xué)校學(xué)生評教表
- 長效在淋巴瘤化療中的支持應(yīng)用課件
- 風(fēng)力發(fā)電場集電線路優(yōu)化分析
- 2023高考地理高三一輪復(fù)習(xí)教學(xué)計劃和備考策略
- 快遞郵寄申請表
- 隔油池圖集pdf國標(biāo)圖集
評論
0/150
提交評論