最常用的 strtoint() 或是 strtofloat() 或是 strtocurr()
不過這會有個問題
如果使用者輸入的不是數字的話,就會出現錯誤
一般習慣是會用 try except ..來處理
但是Delphi裡面有function可以處理這個問題,不用再使用try except來處理
strtointDef('字串',0);
strtofloatDef('字串',0);
strtocurrDef('字串',0);
後面的0就是, 轉不過去時, 就回傳的數字,可以自訂
exsample:
strtointDef('123',0) 回傳 123
strtointDef('xxx',0) 回傳 0
2014年1月29日 星期三
2014年1月27日 星期一
字串-format的用法
var
text : string;
begin
// Just 1 data item
ShowMessage(Format('%s', ['Hello']));
// A mix of literal text and a data item
ShowMessage(Format('String = %s', ['Hello']));
ShowMessage('');
// Examples of each of the data types
ShowMessage(Format('Decimal = %d', [-123]));
ShowMessage(Format('Exponent = %e', [12345.678]));
ShowMessage(Format('Fixed = %f', [12345.678]));
ShowMessage(Format('General = %g', [12345.678]));
ShowMessage(Format('Number = %n', [12345.678]));
ShowMessage(Format('Money = %m', [12345.678]));
ShowMessage(Format('Pointer = %p', [addr(text)]));
ShowMessage(Format('String = %s', ['Hello']));
ShowMessage(Format('Unsigned decimal = %u', [123]));
ShowMessage(Format('Hexadecimal = %x', [140]));
end;
Hello
String = Hello
Decimal = -123
Exponent = 1.23456780000000E+004
Fixed = 12345.68
General = 12345.678
Number = 12,345,68
Money = ?12,345.68
Pointer = 0069FC90
String = Hello
Unsigned decimal = 123
Hexadecimal = 8C
text : string;
begin
// Just 1 data item
ShowMessage(Format('%s', ['Hello']));
// A mix of literal text and a data item
ShowMessage(Format('String = %s', ['Hello']));
ShowMessage('');
// Examples of each of the data types
ShowMessage(Format('Decimal = %d', [-123]));
ShowMessage(Format('Exponent = %e', [12345.678]));
ShowMessage(Format('Fixed = %f', [12345.678]));
ShowMessage(Format('General = %g', [12345.678]));
ShowMessage(Format('Number = %n', [12345.678]));
ShowMessage(Format('Money = %m', [12345.678]));
ShowMessage(Format('Pointer = %p', [addr(text)]));
ShowMessage(Format('String = %s', ['Hello']));
ShowMessage(Format('Unsigned decimal = %u', [123]));
ShowMessage(Format('Hexadecimal = %x', [140]));
end;
Hello
String = Hello
Decimal = -123
Exponent = 1.23456780000000E+004
Fixed = 12345.68
General = 12345.678
Number = 12,345,68
Money = ?12,345.68
Pointer = 0069FC90
String = Hello
Unsigned decimal = 123
Hexadecimal = 8C
2014年1月24日 星期五
檢查是否為正確的Mac Address格式
function isMacAdrFormat(str: String):
boolean;
begin
Result := False;
if Length(str) <> 17 then
Exit;
Result := ((str[1] in ['0'..'9',
'A'..'F']) and
(str[2] in ['0'..'9', 'A'..'F']) and
(str[3] = '-') and
(str[4] in ['0'..'9', 'A'..'F']) and
(str[5] in ['0'..'9', 'A'..'F']) and
(str[6] = '-') and
(str[7] in ['0'..'9', 'A'..'F']) and
(str[8] in ['0'..'9', 'A'..'F']) and
(str[9] = '-') and
(str[10] in ['0'..'9', 'A'..'F']) and
(str[11] in ['0'..'9', 'A'..'F']) and
(str[12] = '-') and
(str[13] in ['0'..'9', 'A'..'F']) and
(str[14] in ['0'..'9', 'A'..'F']) and
(str[15] = '-') and
(str[16] in ['0'..'9', 'A'..'F']) and
(str[17] in ['0'..'9', 'A'..'F']));
end;
讓程式不能重覆開啟
//專案檔最前面加上,1.檢查Mutex,若XMonitor已存在,則離開。
if ProgramAlreadyExists() then exit;
function ProgramAlreadyExists():boolean;
var
hRunningForm: Thandle;
begin
//g_hMutex:=CreateMutex(nil, False, 'X-Console');
g_hMutex:=CreateEvent(nil, False, TRUE, 'X-Monitor');
if (g_hMutex=0) OR (GetLastError()=ERROR_ALREADY_EXISTS) then //已存在
begin
hRunningForm := FindWindow(_XMONITOR_CLASS_NAME,nil);
if hRunningForm<>0 then
begin
SetForegroundWindow(hRunningForm);
// PostMessage(hRunningForm,WM_SYSCOMMAND,SC_MAXIMIZE,0);
end;
Result:=true;
end
else
Result:=false; end;
判斷磁碟機是否有效
function ValidDrive( driveletter: Char ): Boolean;
var
mask: String[6];
sRec: TSearchRec;
oldMode: Cardinal;
retcode: Integer;
begin
oldMode :=SetErrorMode( SEM_FAILCRITICALERRORS );
mask:= '?:\*.*';
mask[1] := driveletter;
{$I-} { don't raise exceptions if we fail }
retcode := FindFirst( mask, faAnyfile, SRec );
if retcode = 0 then
FindClose( SRec );
{$I+}
Result := Abs(retcode) in
[ERROR_SUCCESS,ERROR_FILE_NOT_FOUND,ERROR_NO_MORE_FILES];
SetErrorMode( oldMode );
end; { ValidDrive }
日期相差多少年、月、日、時、分、秒
procedure TForm1.BitBtn1Click(Sender: TObject);
var
a,b: Tdatetime;
c: string;
begin
a:=2007/3/13;
b:=2006/3/2;
c := '';
if (daysbetween(a,b) div 30) <> 0 then
c := inttostr(daysbetween(a,b) div 30)+'個月';
if ((daysbetween(a,b) mod 30) <> 0)and ((daysbetween(a,b) div 30) <> 0)then
c := c + '又' + inttostr(daysbetween(a,b) mod 30)+'天'
else if (daysbetween(a,b) mod 30) <> 0 then
c := inttostr(daysbetween(a,b) mod 30)+'天';
showmessage(c);
showmessage(inttostr(yearsbetween(a,b))+'年');
showmessage(inttostr(monthsbetween(a,b))+'月');
showmessage(inttostr(daysbetween(a,b))+'天');
showmessage(inttostr(hoursbetween(a,b))+'小時');
showmessage(inttostr(minutesbetween(a,b))+'分鐘');
showmessage(inttostr(secondsbetween(a,b))+'秒'); end;
檔案編碼列表
'jp2'=>'0000000C6A502020',
'3gp'=>'0000002066747970',
'3gp5'=>'0000001866747970',
'm4a'=>'00000020667479704D3441',
'ico'=>'00000100',
'spl'=>'00000100',
'vob'=>'000001BA',
'cur'=>'00000200',
'wb2'=>'00000200',
'wk1'=>'0000020006040600',
'wk3'=>'00001A0000100400',
'wk4'=>'00001A0002100400',
'wk5'=>'00001A0002100400',
'123'=>'00001A00051004',
'qxd'=>'00004D4D585052',
'mdf'=>'010F0000',
'tr1'=>'0110',
'rgb'=>'01DA01010003',
'drw'=>'07',
'dss'=>'02647373',
'dat'=>'A90D000000000000',
'db3'=>'03',
'qph'=>'03000000',
'adx'=>'80000020031204',
'db4'=>'04',
'n'=>'FFFE0000',
'a'=>'FFFE0000',
'skf'=>'07534B46',
'dtd'=>'0764743264647464',
'db'=>'D0CF11E0A1B11AE1',
'pcx'=>'0A050101',
'mp'=>'0CED',
'doc'=>'D0CF11E0A1B11AE1',
'nri'=>'0E4E65726F49534F',
'wks'=>'FF00020004040554',
'pf'=>'1100000053434341',
'ntf'=>'4E49544630',
'nsf'=>'4E45534D1A01',
'arc'=>'41724301',
'pak'=>'5041434B',
'eth'=>'1A350100',
'mkv'=>'1A45DFA393428288',
'ws'=>'1D7D',
'gz'=>'1F8B08',
'tar.z'=>'1FA0',
'ain'=>'2112',
'lib'=>'213C617263683E0A',
'msi'=>'D0CF11E0A1B11AE1',
'vmdk'=>'4B444D',
'dsp'=>'23204D6963726F73',
'amr'=>'2321414D52',
'hdr'=>'49536328',
'sav'=>'24464C3240282329',
'eps'=>'C5D0D3C6',
'pdf'=>'25504446',
'fdf'=>'25504446',
'hqx'=>'2854686973206669',
'log'=>'2A2A2A2020496E73',
'ivr'=>'2E524543',
'rm'=>'2E524D46',
'rmvb'=>'2E524D46',
'ra'=>'2E7261FD00',
'au'=>'646E732E',
'cat'=>'30',
'evt'=>'300000004C664C65',
'asf'=>'3026B2758E66CF11',
'wma'=>'3026B2758E66CF11',
'wmv'=>'3026B2758E66CF11',
'wri'=>'BE000000AB',
'7z'=>'377ABCAF271C',
'psd'=>'38425053',
'sle'=>'414376',
'asx'=>'3C',
'xdr'=>'3C',
'dci'=>'3C21646F63747970',
'manifest'=>'3C3F786D6C2076657273696F6E3D',
'xml'=>'3C3F786D6C2076657273696F6E3D22312E30223F3E',
'msc'=>'D0CF11E0A1B11AE1',
'fm'=>'3C4D616B65724669',
'mif'=>'56657273696F6E20',
'gid'=>'4C4E0200',
'hlp'=>'4C4E0200',
'dwg'=>'41433130',
'syw'=>'414D594F',
'abi'=>'414F4C494E444558',
'aby'=>'414F4C4442',
'bag'=>'414F4C2046656564',
'idx'=>'5000000020000000',
'ind'=>'414F4C494458',
'pfc'=>'414F4C564D313030',
'org'=>'414F4C564D313030',
'vcf'=>'424547494E3A5643',
'bin'=>'424C4932323351',
'bmp'=>'424D',
'dib'=>'424D',
'prc'=>'424F4F4B4D4F4249',
'bz2'=>'425A68',
'tar.bz2'=>'425A68',
'tbz2'=>'425A68',
'tb2'=>'425A68',
'rtd'=>'43232B44A4434DA5',
'cbd'=>'434246494C45',
'iso'=>'4344303031',
'clb'=>'434F4D2B',
'cpt'=>'43505446494C45',
'cru'=>'43525553482076',
'swf'=>'465753',
'ctf'=>'436174616C6F6720',
'dms'=>'444D5321',
'adf'=>'5245564E554D3A2C',
'dvr'=>'445644',
'ifo'=>'445644',
'cdr'=>'52494646',
'vcd'=>'454E545259564344',
'mdi'=>'4550',
'e01'=>'4C5646090D0AFF00',
'evtx'=>'456C6646696C6500',
'qbb'=>'458600000600',
'cpe'=>'464158434F564552',
'flv'=>'464C56',
'aiff'=>'464F524D00',
'eml'=>'582D',
'gif'=>'47494638',
'pat'=>'47504154',
'gx2'=>'475832',
'sh3'=>'4848474231',
'tif'=>'4D4D002B',
'tiff'=>'4D4D002B',
'mp3'=>'494433',
'koz'=>'49443303000000',
'crw'=>'49491A0000004845',
'cab'=>'4D534346',
'lit'=>'49544F4C49544C53',
'chi'=>'49545346',
'chm'=>'49545346',
'jar'=>'5F27A889',
'jg'=>'4A47040E000000',
'kgb'=>'4B47425F61726368',
'shd'=>'68490000',
'lnk'=>'4C00000001140200',
'obj'=>'80',
'pdb'=>'ACED000573720012',
'mar'=>'4D41723000',
'dmp'=>'504147454455',
'hdmp'=>'4D444D5093A7',
'mls'=>'4D563243',
'mmf'=>'4D4D4D440000',
'nvram'=>'4D52564E',
'ppz'=>'4D534346',
'snp'=>'4D534346',
'tlb'=>'4D53465402000100',
'dvf'=>'4D535F564F494345',
'msv'=>'4D535F564F494345',
'mid'=>'4D546864',
'midi'=>'4D546864',
'dsn'=>'4D56',
'com'=>'EB',
'dll'=>'4D5A',
'drv'=>'4D5A',
'exe'=>'4D5A',
'pif'=>'4D5A',
'qts'=>'4D5A',
'qtx'=>'4D5A',
'sys'=>'FFFFFFFF',
'acm'=>'4D5A',
'ax'=>'4D5A900003000000',
'cpl'=>'DCDC',
'fon'=>'4D5A',
'ocx'=>'4D5A',
'olb'=>'4D5A',
'scr'=>'4D5A',
'vbx'=>'4D5A',
'vxd'=>'4D5A',
'386'=>'4D5A',
'api'=>'4D5A900003000000',
'flt'=>'76323030332E3130',
'zap'=>'4D5A90000300000004000000FFFF',
'sln'=>'4D6963726F736F66742056697375616C',
'jnt'=>'4E422A00',
'jtp'=>'4E422A00',
'cod'=>'4E616D653A20',
'dbf'=>'4F504C4461746162',
'oga'=>'4F67675300020000',
'ogg'=>'4F67675300020000',
'ogv'=>'4F67675300020000',
'ogx'=>'4F67675300020000',
'dw4'=>'4F7B',
'pgm'=>'50350A',
'pax'=>'504158',
'pgd'=>'504750644D41494E',
'img'=>'EB3C902A',
'zip'=>'504B0304140000',
'docx'=>'504B030414000600',
'pptx'=>'504B030414000600',
'xlsx'=>'504B030414000600',
'kwd'=>'504B0304',
'odt'=>'504B0304',
'odp'=>'504B0304',
'ott'=>'504B0304',
'sxc'=>'504B0304',
'sxd'=>'504B0304',
'sxi'=>'504B0304',
'sxw'=>'504B0304',
'wmz'=>'504B0304',
'xpi'=>'504B0304',
'xps'=>'504B0304',
'xpt'=>'5850434F4D0A5479',
'grp'=>'504D4343',
'qemu'=>'514649',
'abd'=>'5157205665722E20',
'qsd'=>'5157205665722E20',
'reg'=>'FFFE',
'sud'=>'52454745444954',
'ani'=>'52494646',
'cmx'=>'52494646',
'ds4'=>'52494646',
'4xm'=>'52494646',
'avi'=>'52494646',
'cda'=>'52494646',
'qcp'=>'52494646',
'rmi'=>'52494646',
'wav'=>'52494646',
'cap'=>'58435000',
'rar'=>'526172211A0700',
'ast'=>'5343486C',
'shw'=>'53484F57',
'cpi'=>'FF464F4E54',
'sit'=>'5374756666497420',
'sdr'=>'534D415254445257',
'cnv'=>'53514C4F434F4E56',
'cal'=>'B5A2B0B3B3B0A5B5',
'info'=>'E310000100000000',
'uce'=>'55434558',
'ufa'=>'554641C6D2C1',
'pch'=>'564350434830',
'ctl'=>'56455253494F4E20',
'ws2'=>'575332303030',
'lwp'=>'576F726450726F',
'bdr'=>'5854',
'zoo'=>'5A4F4F20',
'ecf'=>'5B47656E6572616C',
'vcw'=>'5B4D535643',
'dun'=>'5B50686F6E655D',
'sam'=>'5B7665725D',
'cpx'=>'5B57696E646F7773',
'cfg'=>'5B666C7473696D2E',
'cas'=>'5F434153455F',
'cbk'=>'5F434153455F',
'arj'=>'60EA',
'vhd'=>'636F6E6563746978',
'csh'=>'6375736800000002',
'p10'=>'64000000',
'dex'=>'6465780A30303900',
'dsw'=>'64737766696C65',
'flac'=>'664C614300000022',
'dbb'=>'6C33336C',
'acd'=>'72696666',
'ram'=>'727473703A2F2F',
'dmg'=>'78',
'lgc'=>'7B0D0A6F20',
'lgd'=>'7B0D0A6F20',
'pwi'=>'7B5C707769',
'rtf'=>'7B5C72746631',
'psp'=>'7E424B00',
'wab'=>'9CCBCB8D1375D211',
'wpf'=>'81CDAB',
'png'=>'89504E470D0A1A0A',
'aw'=>'8A0109000000E108',
'hap'=>'91334846',
'skr'=>'9501',
'gpg'=>'99',
'pkr'=>'9901',
'qdf'=>'AC9EBD8F0000',
'pwl'=>'E3828596',
'dcx'=>'B168DE3A',
'tib'=>'B46E6844',
'acs'=>'C3ABCDAB',
'lbk'=>'C8007900',
'class'=>'CAFEBABE',
'dbx'=>'CFAD12FE',
'dot'=>'D0CF11E0A1B11AE1',
'pps'=>'D0CF11E0A1B11AE1',
'ppt'=>'D0CF11E0A1B11AE1',
'xla'=>'D0CF11E0A1B11AE1',
'xls'=>'D0CF11E0A1B11AE1',
'wiz'=>'D0CF11E0A1B11AE1',
'ac_'=>'D0CF11E0A1B11AE1',
'adp'=>'D0CF11E0A1B11AE1',
'apr'=>'D0CF11E0A1B11AE1',
'mtw'=>'D0CF11E0A1B11AE1',
'opt'=>'D0CF11E0A1B11AE1',
'pub'=>'D0CF11E0A1B11AE1',
'rvt'=>'D0CF11E0A1B11AE1',
'sou'=>'D0CF11E0A1B11AE1',
'spo'=>'D0CF11E0A1B11AE1',
'vsd'=>'D0CF11E0A1B11AE1',
'wps'=>'D0CF11E0A1B11AE1',
'ftr'=>'D20A0000',
'arl'=>'D42A',
'aut'=>'D42A',
'wmf'=>'D7CDC69A',
'efx'=>'DCFE',
'one'=>'E4525C7B8CD8A74D',
'rpm'=>'EDABEEDB',
'gho'=>'FEEF',
'ghs'=>'FEEF',
'wp'=>'FF575043',
'wpd'=>'FF575043',
'wpg'=>'FF575043',
'wpp'=>'FF575043',
'wp5'=>'FF575043',
'wp6'=>'FF575043',
'jfif'=>'FFD8FF',
'jpe'=>'FFD8FF',
'jpeg'=>'FFD8FF',
'jpg'=>'FFD8FF',
'mof'=>'FFFE23006C006900',
'ipa'=>'504B03040A',
'3gp'=>'0000002066747970',
'3gp5'=>'0000001866747970',
'm4a'=>'00000020667479704D3441',
'ico'=>'00000100',
'spl'=>'00000100',
'vob'=>'000001BA',
'cur'=>'00000200',
'wb2'=>'00000200',
'wk1'=>'0000020006040600',
'wk3'=>'00001A0000100400',
'wk4'=>'00001A0002100400',
'wk5'=>'00001A0002100400',
'123'=>'00001A00051004',
'qxd'=>'00004D4D585052',
'mdf'=>'010F0000',
'tr1'=>'0110',
'rgb'=>'01DA01010003',
'drw'=>'07',
'dss'=>'02647373',
'dat'=>'A90D000000000000',
'db3'=>'03',
'qph'=>'03000000',
'adx'=>'80000020031204',
'db4'=>'04',
'n'=>'FFFE0000',
'a'=>'FFFE0000',
'skf'=>'07534B46',
'dtd'=>'0764743264647464',
'db'=>'D0CF11E0A1B11AE1',
'pcx'=>'0A050101',
'mp'=>'0CED',
'doc'=>'D0CF11E0A1B11AE1',
'nri'=>'0E4E65726F49534F',
'wks'=>'FF00020004040554',
'pf'=>'1100000053434341',
'ntf'=>'4E49544630',
'nsf'=>'4E45534D1A01',
'arc'=>'41724301',
'pak'=>'5041434B',
'eth'=>'1A350100',
'mkv'=>'1A45DFA393428288',
'ws'=>'1D7D',
'gz'=>'1F8B08',
'tar.z'=>'1FA0',
'ain'=>'2112',
'lib'=>'213C617263683E0A',
'msi'=>'D0CF11E0A1B11AE1',
'vmdk'=>'4B444D',
'dsp'=>'23204D6963726F73',
'amr'=>'2321414D52',
'hdr'=>'49536328',
'sav'=>'24464C3240282329',
'eps'=>'C5D0D3C6',
'pdf'=>'25504446',
'fdf'=>'25504446',
'hqx'=>'2854686973206669',
'log'=>'2A2A2A2020496E73',
'ivr'=>'2E524543',
'rm'=>'2E524D46',
'rmvb'=>'2E524D46',
'ra'=>'2E7261FD00',
'au'=>'646E732E',
'cat'=>'30',
'evt'=>'300000004C664C65',
'asf'=>'3026B2758E66CF11',
'wma'=>'3026B2758E66CF11',
'wmv'=>'3026B2758E66CF11',
'wri'=>'BE000000AB',
'7z'=>'377ABCAF271C',
'psd'=>'38425053',
'sle'=>'414376',
'asx'=>'3C',
'xdr'=>'3C',
'dci'=>'3C21646F63747970',
'manifest'=>'3C3F786D6C2076657273696F6E3D',
'xml'=>'3C3F786D6C2076657273696F6E3D22312E30223F3E',
'msc'=>'D0CF11E0A1B11AE1',
'fm'=>'3C4D616B65724669',
'mif'=>'56657273696F6E20',
'gid'=>'4C4E0200',
'hlp'=>'4C4E0200',
'dwg'=>'41433130',
'syw'=>'414D594F',
'abi'=>'414F4C494E444558',
'aby'=>'414F4C4442',
'bag'=>'414F4C2046656564',
'idx'=>'5000000020000000',
'ind'=>'414F4C494458',
'pfc'=>'414F4C564D313030',
'org'=>'414F4C564D313030',
'vcf'=>'424547494E3A5643',
'bin'=>'424C4932323351',
'bmp'=>'424D',
'dib'=>'424D',
'prc'=>'424F4F4B4D4F4249',
'bz2'=>'425A68',
'tar.bz2'=>'425A68',
'tbz2'=>'425A68',
'tb2'=>'425A68',
'rtd'=>'43232B44A4434DA5',
'cbd'=>'434246494C45',
'iso'=>'4344303031',
'clb'=>'434F4D2B',
'cpt'=>'43505446494C45',
'cru'=>'43525553482076',
'swf'=>'465753',
'ctf'=>'436174616C6F6720',
'dms'=>'444D5321',
'adf'=>'5245564E554D3A2C',
'dvr'=>'445644',
'ifo'=>'445644',
'cdr'=>'52494646',
'vcd'=>'454E545259564344',
'mdi'=>'4550',
'e01'=>'4C5646090D0AFF00',
'evtx'=>'456C6646696C6500',
'qbb'=>'458600000600',
'cpe'=>'464158434F564552',
'flv'=>'464C56',
'aiff'=>'464F524D00',
'eml'=>'582D',
'gif'=>'47494638',
'pat'=>'47504154',
'gx2'=>'475832',
'sh3'=>'4848474231',
'tif'=>'4D4D002B',
'tiff'=>'4D4D002B',
'mp3'=>'494433',
'koz'=>'49443303000000',
'crw'=>'49491A0000004845',
'cab'=>'4D534346',
'lit'=>'49544F4C49544C53',
'chi'=>'49545346',
'chm'=>'49545346',
'jar'=>'5F27A889',
'jg'=>'4A47040E000000',
'kgb'=>'4B47425F61726368',
'shd'=>'68490000',
'lnk'=>'4C00000001140200',
'obj'=>'80',
'pdb'=>'ACED000573720012',
'mar'=>'4D41723000',
'dmp'=>'504147454455',
'hdmp'=>'4D444D5093A7',
'mls'=>'4D563243',
'mmf'=>'4D4D4D440000',
'nvram'=>'4D52564E',
'ppz'=>'4D534346',
'snp'=>'4D534346',
'tlb'=>'4D53465402000100',
'dvf'=>'4D535F564F494345',
'msv'=>'4D535F564F494345',
'mid'=>'4D546864',
'midi'=>'4D546864',
'dsn'=>'4D56',
'com'=>'EB',
'dll'=>'4D5A',
'drv'=>'4D5A',
'exe'=>'4D5A',
'pif'=>'4D5A',
'qts'=>'4D5A',
'qtx'=>'4D5A',
'sys'=>'FFFFFFFF',
'acm'=>'4D5A',
'ax'=>'4D5A900003000000',
'cpl'=>'DCDC',
'fon'=>'4D5A',
'ocx'=>'4D5A',
'olb'=>'4D5A',
'scr'=>'4D5A',
'vbx'=>'4D5A',
'vxd'=>'4D5A',
'386'=>'4D5A',
'api'=>'4D5A900003000000',
'flt'=>'76323030332E3130',
'zap'=>'4D5A90000300000004000000FFFF',
'sln'=>'4D6963726F736F66742056697375616C',
'jnt'=>'4E422A00',
'jtp'=>'4E422A00',
'cod'=>'4E616D653A20',
'dbf'=>'4F504C4461746162',
'oga'=>'4F67675300020000',
'ogg'=>'4F67675300020000',
'ogv'=>'4F67675300020000',
'ogx'=>'4F67675300020000',
'dw4'=>'4F7B',
'pgm'=>'50350A',
'pax'=>'504158',
'pgd'=>'504750644D41494E',
'img'=>'EB3C902A',
'zip'=>'504B0304140000',
'docx'=>'504B030414000600',
'pptx'=>'504B030414000600',
'xlsx'=>'504B030414000600',
'kwd'=>'504B0304',
'odt'=>'504B0304',
'odp'=>'504B0304',
'ott'=>'504B0304',
'sxc'=>'504B0304',
'sxd'=>'504B0304',
'sxi'=>'504B0304',
'sxw'=>'504B0304',
'wmz'=>'504B0304',
'xpi'=>'504B0304',
'xps'=>'504B0304',
'xpt'=>'5850434F4D0A5479',
'grp'=>'504D4343',
'qemu'=>'514649',
'abd'=>'5157205665722E20',
'qsd'=>'5157205665722E20',
'reg'=>'FFFE',
'sud'=>'52454745444954',
'ani'=>'52494646',
'cmx'=>'52494646',
'ds4'=>'52494646',
'4xm'=>'52494646',
'avi'=>'52494646',
'cda'=>'52494646',
'qcp'=>'52494646',
'rmi'=>'52494646',
'wav'=>'52494646',
'cap'=>'58435000',
'rar'=>'526172211A0700',
'ast'=>'5343486C',
'shw'=>'53484F57',
'cpi'=>'FF464F4E54',
'sit'=>'5374756666497420',
'sdr'=>'534D415254445257',
'cnv'=>'53514C4F434F4E56',
'cal'=>'B5A2B0B3B3B0A5B5',
'info'=>'E310000100000000',
'uce'=>'55434558',
'ufa'=>'554641C6D2C1',
'pch'=>'564350434830',
'ctl'=>'56455253494F4E20',
'ws2'=>'575332303030',
'lwp'=>'576F726450726F',
'bdr'=>'5854',
'zoo'=>'5A4F4F20',
'ecf'=>'5B47656E6572616C',
'vcw'=>'5B4D535643',
'dun'=>'5B50686F6E655D',
'sam'=>'5B7665725D',
'cpx'=>'5B57696E646F7773',
'cfg'=>'5B666C7473696D2E',
'cas'=>'5F434153455F',
'cbk'=>'5F434153455F',
'arj'=>'60EA',
'vhd'=>'636F6E6563746978',
'csh'=>'6375736800000002',
'p10'=>'64000000',
'dex'=>'6465780A30303900',
'dsw'=>'64737766696C65',
'flac'=>'664C614300000022',
'dbb'=>'6C33336C',
'acd'=>'72696666',
'ram'=>'727473703A2F2F',
'dmg'=>'78',
'lgc'=>'7B0D0A6F20',
'lgd'=>'7B0D0A6F20',
'pwi'=>'7B5C707769',
'rtf'=>'7B5C72746631',
'psp'=>'7E424B00',
'wab'=>'9CCBCB8D1375D211',
'wpf'=>'81CDAB',
'png'=>'89504E470D0A1A0A',
'aw'=>'8A0109000000E108',
'hap'=>'91334846',
'skr'=>'9501',
'gpg'=>'99',
'pkr'=>'9901',
'qdf'=>'AC9EBD8F0000',
'pwl'=>'E3828596',
'dcx'=>'B168DE3A',
'tib'=>'B46E6844',
'acs'=>'C3ABCDAB',
'lbk'=>'C8007900',
'class'=>'CAFEBABE',
'dbx'=>'CFAD12FE',
'dot'=>'D0CF11E0A1B11AE1',
'pps'=>'D0CF11E0A1B11AE1',
'ppt'=>'D0CF11E0A1B11AE1',
'xla'=>'D0CF11E0A1B11AE1',
'xls'=>'D0CF11E0A1B11AE1',
'wiz'=>'D0CF11E0A1B11AE1',
'ac_'=>'D0CF11E0A1B11AE1',
'adp'=>'D0CF11E0A1B11AE1',
'apr'=>'D0CF11E0A1B11AE1',
'mtw'=>'D0CF11E0A1B11AE1',
'opt'=>'D0CF11E0A1B11AE1',
'pub'=>'D0CF11E0A1B11AE1',
'rvt'=>'D0CF11E0A1B11AE1',
'sou'=>'D0CF11E0A1B11AE1',
'spo'=>'D0CF11E0A1B11AE1',
'vsd'=>'D0CF11E0A1B11AE1',
'wps'=>'D0CF11E0A1B11AE1',
'ftr'=>'D20A0000',
'arl'=>'D42A',
'aut'=>'D42A',
'wmf'=>'D7CDC69A',
'efx'=>'DCFE',
'one'=>'E4525C7B8CD8A74D',
'rpm'=>'EDABEEDB',
'gho'=>'FEEF',
'ghs'=>'FEEF',
'wp'=>'FF575043',
'wpd'=>'FF575043',
'wpg'=>'FF575043',
'wpp'=>'FF575043',
'wp5'=>'FF575043',
'wp6'=>'FF575043',
'jfif'=>'FFD8FF',
'jpe'=>'FFD8FF',
'jpeg'=>'FFD8FF',
'jpg'=>'FFD8FF',
'mof'=>'FFFE23006C006900',
'ipa'=>'504B03040A',
delphi操作Excel
//Excel篇
mExcel.DisplayAlerts := False; //Disable 提示訊息
mExcel.Visible := True; //顯示 Excel 畫面
mExcel.ActiveWindow.FreezePanes := True; //凍結窗格(上一行一定要先選列或格)
mExcel.ActiveWindow.Zoom := 75; //顯示比率為75%
mExcel.ActiveWindow.Zoom := True; //依據目前選擇範圍自動決定視窗大小
//Workbook篇
mWorkBook := mExcel.WorkBooks[1]; //將指定變數設定第一個活頁簿(數字可以用名稱取代)
mWorkBook.Name :='內容'; //變更WorkBook名稱
mExcel.WorkBooks.Add; //新增一個空白活頁簿
mExcel.WorkBooks.Open(完整路徑); //開啟Excel檔
mExcel.WorkBooks[mFile].Close; //關閉Excel檔
DeleteFile(mPath+mFile); //刪除Excel檔
mWorkBook.SaveAs(mPath+mFile,-4143); //儲存Excel檔
//Sheet篇
mSheet := mExcel.WorkBooks[1].WorkSheets[1]; //將指定變數設定第一個工作表(數字可以用名稱取代)
mSheet.Name :='內容'; //變更Sheet名稱
mSheet.Copy[After := mWorkBook.Sheets[mWorkBook.Sheets.Count]]; //將mSheet複製到mWorkBook最後
mSheet.Move[After := mWorkBook.Sheets[mWorkBook.Sheets.Count]]; //將mSheet搬移到mWorkBook最後
mWorkbook.Sheets.Add[After:=mWorkbook.Sheets[mSheetCount-1]]; //新增一個空白工作表
mWorkBook.Sheets[1].Delete; //刪除指定Sheet
mWorkBook.Sheets[1].Activate; //將指定Sheet設為使用中
//刪除多餘Sheet
if (mWorkBook.Sheets.Count > 1) then
begin
for i:=2 to mWorkBook.Sheets.Count do
mWorkBook.Sheets[2].Delete;
end;
//選取篇
mSheet.Cells.EntireColumn //所有欄
mSheet.Cells.EntireRow //所有列
mSheet.Cells //所有儲存格
mSheet.Columns[1] //第一欄
mSheet.Rows[1] //第一列
mSheet.Cells[r,c] //第r列第c欄
mSheet.Range[起,迄] //區間選擇(起訖可以是欄、列、格)
//填值篇
mSheet.Cells[1,1].Value:= '內容'; //欄位填值
mSheet.Cells[1,1].Formula:= '公式'; //欄位填入公式
mSheet.Cells[1,1].FormulaR1C1:= '公式'; //欄位填入公式
mSheet.Cells[1,1].HasFormula //儲存格是否有公式
//格式篇
mSheet.Range[起,迄].Merge; //合併儲存格
mSheet.Cells.EntireColumn.AutoFit; //最適欄寬
mSheet.Cells.EntireRow.AutoFit; //最適列高
mSheet.Columns[1].ColumnWidth := 100; //設定欄寬
mSheet.Rows[1].RowHeight := 100; //設定列高
mSheet.Rows[1].HorizontalAlignment := -4108; //水平置中(靠左:-4131;靠右:-4152)
mSheet.Rows[1].VerticalAlignment := -4108; //垂直置中(靠左:-4131;靠右:-4152)
mSheet.Rows[1].WrapText := True; //自動換列
mSheet.Columns[1].Hidden := True; //隱藏
mSheet.Columns[1].NumberFormatLocal := '@'; //設定欄位格式[文字]
mSheet.Columns[1].NumberFormatLocal := '#,##0_ '; //設定欄位格式[數值(整數位 三位一撇)]
mSheet.Columns[1].NumberFormatLocal := '#,##0_ ;[紅色]-#,##0 '; //設定欄位格式[數值(整數位 三位一撇 負數紅字)]
mSheet.Columns[1].NumberFormatLocal := '#,##0_);[紅色](#,##0)'; //設定欄位格式[數值(整數位 三位一撇 負數括號紅字)]
mSheet.Columns[1].NumberFormatLocal := '0.00_ '; //設定欄位格式[數值(小數兩位)]
mSheet.Columns[1].NumberFormatLocal := '0.0_);[紅色](0.0)'; //設定欄位格式[數值(小數一位 負數紅字)]
mSheet.Columns[1].NumberFormatLocal := '0.00%'; //設定欄位格式[百分比(小數兩位)]
mSheet.Cells[1].Interior.ColorIndex := 38; //設定底色為玫瑰色
mSheet.Cells[1].Interior.ColorIndex := 6; //設定底色為黃色
mSheet.Cells[1].Interior.ColorIndex := 36; //設定底色為淺黃色
mSheet.Cells[1].Interior.ColorIndex := 35; //設定底色為淺綠色
mSheet.Cells[1,1].Font.Size := 10; //設定字體大小
mSheet.Cells[1,1].Font.Bold := True; //設定粗體字
......
//框線
mSheet.Cells[1,1].Borders[n].LineStyle := 1;
mSheet.Cells[1,1].Borders[n].Weight := 2;
//n = 5.左上右下斜線 6.左下右上斜線 7.左邊線 8.上邊線 9.下邊線 10.右邊線 11.垂直線 12.水平線
//Borders可使用參數:
// LineStyle = 1 實線;-4115 短虛線;4 長短虛線;5 長短短虛線;-4118 細虛線;-4119 雙實線
// Weight = 由細到粗:1 --> 2 --> -4138 --> 4
// ColorIndex = 顏色
//設定格式化條件
mSheet.Cells[1,1].FormatConditions.Delete; //清除格式化條件
mSheet.Cells[1,1].FormatConditions.Add[Type:='1', Operator:='1', Formula1:='1', Formula2:='2']; //新增格式化條件(最多3個)
//參數說明
// 參數 中文說明 說明
//======== ======== =======================================================================
//Type 來源型態 1.儲存格的值 2.公式
//Operator 規則 1.介於 2.不介於 3.等於 4.不等於 5.大於 6.小於 7.大於或等於 8.小於或等於
//Formula1 條件起
//Formula2 條件迄
mSheet.Cells[1,1].FormatConditions(1).Interior.ColorIndex := 3; //設定條件一為底色紅色
//可設定之格式有:Fonts(字型)、Borders(外框)、Interior(圖樣)
//資料篇
mSheet.Cells.EntireColumn.AutoFilter; //自動篩選
mExcel.Selection.Subtotal(1,-4157,VarArrayOf([4,5,6,7,8]),True,False,True); //做小計
//參數說明
// 參數 中文說明 預設值
//================ ======================== ======
//GroupBy 分組小計欄位 1
//Function 使用函數 -4157 加總
//TotalList 新增小計位置
//Replace 取代目前小計 True
//PageBreaks 每組資料分頁 False
//SummaryBelowData 摘要資料置於小計資料下方 True
//可使用函數:-4157 加總;-4106 平均值;-4112 項目個數;-4113 數字項目數;-4136 最大值;-4139 最小值;
mSheet.Outline.ShowLevels(2); //把小計層級設2顯示
//列印篇
mSheet.PageSetup.PrintTitleRows := '$1:$1'; //列印標題列
mSheet.PageSetup.CenterHeader := '表頭'; //中頁首
mSheet.PageSetup.LeftHeader := '頁次: &P / &N'; //左頁首
mSheet.PageSetup.RightHeader := ''; //右頁首
mSheet.PageSetup.CenterFooter := '& &P / &N'; //中頁尾
mSheet.PageSetup.LeftFooter := '頁次: &P / &N'; //左頁尾
mSheet.PageSetup.RightFooter := ''; //右頁尾
mSheet.PageSetup.PrintArea := '$B$1:$N$300'; //設定列印範圍
mSheet.PageSetup.Orientation := 2; //1.直印 2.橫印
mSheet.PageSetup.Zoom := 65; //列印時小成65%
mSheet.PageSetup.Zoom := True; //使用頁次縮放功能
mSheet.PageSetup.FitToPagesWide := 1; //縮放成一頁寬(需配合Zoom = True)
mSheet.PageSetup.FitToPagesTall := 1; //縮放成一頁高(需配合Zoom = True)
mSheet.PageSetup.PaperSize := 8; //設定紙張大小 8:A3、9:A4
mSheet.PageSetup.TopMargin := 1/0.035; //頂邊距1cm
mSheet.PageSetup.BottomMargin := 1/0.035; //底邊距1cm
mSheet.PageSetup.LeftMargin := 1/0.035; //左邊距2cm
mSheet.PageSetup.RightMargin := 1/0.035; //右邊距2cm
mSheet.PageSetup.HeaderMargin := 1/0.035; //頁首1cm
mSheet.PageSetup.FooterMargin := 1/0.035; //頁尾1cm
mSheet.PageSetup.CenterHorizontally := True; //頁面水平居中
mSheet.PageSetup.CenterVertically := False; //頁面垂直居中
mExcel.DisplayAlerts := False; //Disable 提示訊息
mExcel.Visible := True; //顯示 Excel 畫面
mExcel.ActiveWindow.FreezePanes := True; //凍結窗格(上一行一定要先選列或格)
mExcel.ActiveWindow.Zoom := 75; //顯示比率為75%
mExcel.ActiveWindow.Zoom := True; //依據目前選擇範圍自動決定視窗大小
//Workbook篇
mWorkBook := mExcel.WorkBooks[1]; //將指定變數設定第一個活頁簿(數字可以用名稱取代)
mWorkBook.Name :='內容'; //變更WorkBook名稱
mExcel.WorkBooks.Add; //新增一個空白活頁簿
mExcel.WorkBooks.Open(完整路徑); //開啟Excel檔
mExcel.WorkBooks[mFile].Close; //關閉Excel檔
DeleteFile(mPath+mFile); //刪除Excel檔
mWorkBook.SaveAs(mPath+mFile,-4143); //儲存Excel檔
//Sheet篇
mSheet := mExcel.WorkBooks[1].WorkSheets[1]; //將指定變數設定第一個工作表(數字可以用名稱取代)
mSheet.Name :='內容'; //變更Sheet名稱
mSheet.Copy[After := mWorkBook.Sheets[mWorkBook.Sheets.Count]]; //將mSheet複製到mWorkBook最後
mSheet.Move[After := mWorkBook.Sheets[mWorkBook.Sheets.Count]]; //將mSheet搬移到mWorkBook最後
mWorkbook.Sheets.Add[After:=mWorkbook.Sheets[mSheetCount-1]]; //新增一個空白工作表
mWorkBook.Sheets[1].Delete; //刪除指定Sheet
mWorkBook.Sheets[1].Activate; //將指定Sheet設為使用中
//刪除多餘Sheet
if (mWorkBook.Sheets.Count > 1) then
begin
for i:=2 to mWorkBook.Sheets.Count do
mWorkBook.Sheets[2].Delete;
end;
//選取篇
mSheet.Cells.EntireColumn //所有欄
mSheet.Cells.EntireRow //所有列
mSheet.Cells //所有儲存格
mSheet.Columns[1] //第一欄
mSheet.Rows[1] //第一列
mSheet.Cells[r,c] //第r列第c欄
mSheet.Range[起,迄] //區間選擇(起訖可以是欄、列、格)
//填值篇
mSheet.Cells[1,1].Value:= '內容'; //欄位填值
mSheet.Cells[1,1].Formula:= '公式'; //欄位填入公式
mSheet.Cells[1,1].FormulaR1C1:= '公式'; //欄位填入公式
mSheet.Cells[1,1].HasFormula //儲存格是否有公式
//格式篇
mSheet.Range[起,迄].Merge; //合併儲存格
mSheet.Cells.EntireColumn.AutoFit; //最適欄寬
mSheet.Cells.EntireRow.AutoFit; //最適列高
mSheet.Columns[1].ColumnWidth := 100; //設定欄寬
mSheet.Rows[1].RowHeight := 100; //設定列高
mSheet.Rows[1].HorizontalAlignment := -4108; //水平置中(靠左:-4131;靠右:-4152)
mSheet.Rows[1].VerticalAlignment := -4108; //垂直置中(靠左:-4131;靠右:-4152)
mSheet.Rows[1].WrapText := True; //自動換列
mSheet.Columns[1].Hidden := True; //隱藏
mSheet.Columns[1].NumberFormatLocal := '@'; //設定欄位格式[文字]
mSheet.Columns[1].NumberFormatLocal := '#,##0_ '; //設定欄位格式[數值(整數位 三位一撇)]
mSheet.Columns[1].NumberFormatLocal := '#,##0_ ;[紅色]-#,##0 '; //設定欄位格式[數值(整數位 三位一撇 負數紅字)]
mSheet.Columns[1].NumberFormatLocal := '#,##0_);[紅色](#,##0)'; //設定欄位格式[數值(整數位 三位一撇 負數括號紅字)]
mSheet.Columns[1].NumberFormatLocal := '0.00_ '; //設定欄位格式[數值(小數兩位)]
mSheet.Columns[1].NumberFormatLocal := '0.0_);[紅色](0.0)'; //設定欄位格式[數值(小數一位 負數紅字)]
mSheet.Columns[1].NumberFormatLocal := '0.00%'; //設定欄位格式[百分比(小數兩位)]
mSheet.Cells[1].Interior.ColorIndex := 38; //設定底色為玫瑰色
mSheet.Cells[1].Interior.ColorIndex := 6; //設定底色為黃色
mSheet.Cells[1].Interior.ColorIndex := 36; //設定底色為淺黃色
mSheet.Cells[1].Interior.ColorIndex := 35; //設定底色為淺綠色
mSheet.Cells[1,1].Font.Size := 10; //設定字體大小
mSheet.Cells[1,1].Font.Bold := True; //設定粗體字
......
//框線
mSheet.Cells[1,1].Borders[n].LineStyle := 1;
mSheet.Cells[1,1].Borders[n].Weight := 2;
//n = 5.左上右下斜線 6.左下右上斜線 7.左邊線 8.上邊線 9.下邊線 10.右邊線 11.垂直線 12.水平線
//Borders可使用參數:
// LineStyle = 1 實線;-4115 短虛線;4 長短虛線;5 長短短虛線;-4118 細虛線;-4119 雙實線
// Weight = 由細到粗:1 --> 2 --> -4138 --> 4
// ColorIndex = 顏色
//設定格式化條件
mSheet.Cells[1,1].FormatConditions.Delete; //清除格式化條件
mSheet.Cells[1,1].FormatConditions.Add[Type:='1', Operator:='1', Formula1:='1', Formula2:='2']; //新增格式化條件(最多3個)
//參數說明
// 參數 中文說明 說明
//======== ======== =======================================================================
//Type 來源型態 1.儲存格的值 2.公式
//Operator 規則 1.介於 2.不介於 3.等於 4.不等於 5.大於 6.小於 7.大於或等於 8.小於或等於
//Formula1 條件起
//Formula2 條件迄
mSheet.Cells[1,1].FormatConditions(1).Interior.ColorIndex := 3; //設定條件一為底色紅色
//可設定之格式有:Fonts(字型)、Borders(外框)、Interior(圖樣)
//資料篇
mSheet.Cells.EntireColumn.AutoFilter; //自動篩選
mExcel.Selection.Subtotal(1,-4157,VarArrayOf([4,5,6,7,8]),True,False,True); //做小計
//參數說明
// 參數 中文說明 預設值
//================ ======================== ======
//GroupBy 分組小計欄位 1
//Function 使用函數 -4157 加總
//TotalList 新增小計位置
//Replace 取代目前小計 True
//PageBreaks 每組資料分頁 False
//SummaryBelowData 摘要資料置於小計資料下方 True
//可使用函數:-4157 加總;-4106 平均值;-4112 項目個數;-4113 數字項目數;-4136 最大值;-4139 最小值;
mSheet.Outline.ShowLevels(2); //把小計層級設2顯示
//列印篇
mSheet.PageSetup.PrintTitleRows := '$1:$1'; //列印標題列
mSheet.PageSetup.CenterHeader := '表頭'; //中頁首
mSheet.PageSetup.LeftHeader := '頁次: &P / &N'; //左頁首
mSheet.PageSetup.RightHeader := ''; //右頁首
mSheet.PageSetup.CenterFooter := '& &P / &N'; //中頁尾
mSheet.PageSetup.LeftFooter := '頁次: &P / &N'; //左頁尾
mSheet.PageSetup.RightFooter := ''; //右頁尾
mSheet.PageSetup.PrintArea := '$B$1:$N$300'; //設定列印範圍
mSheet.PageSetup.Orientation := 2; //1.直印 2.橫印
mSheet.PageSetup.Zoom := 65; //列印時小成65%
mSheet.PageSetup.Zoom := True; //使用頁次縮放功能
mSheet.PageSetup.FitToPagesWide := 1; //縮放成一頁寬(需配合Zoom = True)
mSheet.PageSetup.FitToPagesTall := 1; //縮放成一頁高(需配合Zoom = True)
mSheet.PageSetup.PaperSize := 8; //設定紙張大小 8:A3、9:A4
mSheet.PageSetup.TopMargin := 1/0.035; //頂邊距1cm
mSheet.PageSetup.BottomMargin := 1/0.035; //底邊距1cm
mSheet.PageSetup.LeftMargin := 1/0.035; //左邊距2cm
mSheet.PageSetup.RightMargin := 1/0.035; //右邊距2cm
mSheet.PageSetup.HeaderMargin := 1/0.035; //頁首1cm
mSheet.PageSetup.FooterMargin := 1/0.035; //頁尾1cm
mSheet.PageSetup.CenterHorizontally := True; //頁面水平居中
mSheet.PageSetup.CenterVertically := False; //頁面垂直居中
判斷某一日期是否小於現在
procedure TForm1.Button1Click(Sender: TObject);
var
pDate : AnsiString;
begin
pDate:='2007/11/01';
if strtodate(pDate) < strtodate(FormatDateTime('yyyy/mm/dd', Now)) then
showmessage(datetostr(now()));
end;
讓視窗程式開啟時,位置在螢幕的中間偏上
通常是設定在position屬性=poScreenCenter,但是那個是正中間,對於一般人的眼睛視線應該是中間偏上比較息慣,所以你可以在FormShow時加入下列程式碼:
procedure TForm1.FormShow(Sender: TObject);
begin
left := (screen.Width - Width) div 2; //等寬
top := (screen.Height - Height)*1 div 3; //高度偏上
end;
2014年1月23日 星期四
字串去空白
去前後的空白可使用 trim() 這個函數
要去掉中間的空白,就要使用
function StringReplace ( const SourceString, OldPattern, NewPattern : string; Flags : TReplaceFlags ) : string
範例:把a改成the
要去掉中間的空白,就要使用
function StringReplace ( const SourceString, OldPattern, NewPattern : string; Flags : TReplaceFlags ) : string
範例:把a改成the
var
before, after : string;
begin
// Try to replace all occurrences of a or A to THE
before := 'This is a way to live A big life';
after := StringReplace(before, ' a ', ' THE ',
[rfReplaceAll, rfIgnoreCase]);
ShowMessage('Before = '+before);
ShowMessage('After = '+after);
end;
字串基本處理 (參考書上所寫)
1 | CompareStr | 比較兩字串的大小(大小寫視為不同),傳回第一個不相同字元 ASCII 碼的差,若字串完全相同,則傳回 0 (字串的編號從 1 開始)。 | function CompareStr(const S1, S2 : string) : Integer; 傳回結果: 當 S1>S2 傳回大於 0 的整數 當 S1<S2 傳回小於 0 的整數 當 S1=S2 傳回 0 範例: S1:='Delphi 6.0'; S2:='delphi 6.0'; if CompareStr(S1,S2)<>0 then showMessage('大小寫被視為不同的!'); |
2 | CompareText | 比較兩字串的大小(大小寫視為相同),傳回第一個不相同字元 ASCII 碼的差 | function CompareText(const S1, S2:string) : Integer; 傳回結果: 當 S1>S2 傳回大於 0 的整數 當 S1<S2 傳回小於 0 的整數 當 S1=S2 傳回 0 範例: S1:='Delphi'; S2:='delphi'; ResultFlag:=CompareText(S1,S2); if ResultFlag <> ShowMessage('Delphi <> else if ResultFlag > 0 then ShowMessage('Delphi > delphi') else ShowMessage('Delphi = delphi'); {Delphi = delphi} |
3 | Length | 傳回字串 S 的長度 | function Length(S) : Integer; 範例: S:='Delphi 6.0 讚 '; //中文算兩個Bytes,長度包含空白 ShowMessage(IntToStr(Length(S))); {14} |
4 | Concat | 傳回字串相加的結果。使用字串相加(+)運算子,亦有相同的效果,且執行速度較快 | function Concat(s1 [, s2, ..., sn ] : string) : string; 範例: S1:='今天'; S2:='下雨'; ShowMessage(Concat(S1, S2)); {今天下雨} |
5 | Insert | 將 Source 字串插入 S 字串的第 count 個字元位置(字串的編號從 1 開始) | procedure Insert(Source : string; var S : string; Index : Integer); 範例: S1:='I Love you!'; S2:=' don''t'; insert(S2, S1, 2); showmessage(S1); {I don't Love you!} |
6 | Copy | 傳回 S 字串的第 Index 字元起,拷貝 Count 個字元(字串的編號從 1 開始) | function Copy(S; Index, Count:Integer) : string; 範例: S:='Delphi 2006 is good??!'; S:=Copy(S, 1, 11); ShowMessage(S); {Delphi 2006} |
7 | Delete | 將 S 字串從第 Index 字元開始,刪除 Count 個字元(字串的編號從 1 開始) | procedure Delete(var S : string; Index, Count : Integer); 範例: S:='Delphi is good??!'; Delete(S, 15, 2); ShowMessage(S); {Delphi is good!} |
8 | Pos | 傳回 Substr 字串於 S 字串的開始位置(字串的編號從 1 開始) | function Pos(Substr : string; S : string) : Integer; 範例: S:=' Delphi is good '; while Pos(' ', S)>0 do begin i:=Pos(' ', S); showmessage(inttostr(i)); S[i]:='_'; end; {1, 8, 11, 16, 17} |
9 | Trim | 清除字串前後的空白 | function Trim(const S : string) : string; 範例: S1:=' Delphi 6.0 '; ShowMessage(Trim(S1)); {'Delphi 6.0'} |
10 | TrimLeft | 清除字串左邊的空白 | function TrimLeft(const S : string) : string; 範例: S1:=' Delphi 6.0 '; ShowMessage(TrimLeft(S1)); {'Delphi 6.0 '} |
11 | TrimRight | 清除字串右邊的空白 | function TrimRight(const S : string) : string; 範例: S1:=' Delphi 6.0 '; ShowMessage(TrimRight(S1)); |
Delphi 顏色
clBlack | 黑色Black |
clMaroon | 栗色Maroon |
clGreen | 綠色Green |
clOlive | 橄欖綠Olive green |
clNavy | 深藍色Navy blue |
clPurple | 紫色Purple |
clTeal | 深青色Teal |
clGray | 灰色Gray |
clSilver | 銀色Silver |
clRed | 紅色Red |
clLine | 淺綠色Lime green |
clBlue | 藍色Blue |
clFuchsia | 紫紅色Fuchsia |
clAqua | 淺綠色Aqua |
clWhite | 白色White |
clBackground | 當前的系統桌面的背景顏色 |
clActiveCaption | 當前的被激活窗口的標題欄的顏色 |
clInactiveCaption | 當前的沒有被激活的窗口的標題欄的顏色 |
clMenu | 當前的菜單背景的顏色 |
clWindow | 當前的窗口背景的顏色 |
clWindowFrame | 當前的窗口框架的顏色 |
clMenuText | 當前的菜單上的文本的顏色 |
clCaptionText | 當前的被激活窗口的標題欄的文本的顏色 |
clActiveBorder | 當前的被激活窗口的邊界顏色 |
clInactiveBorder | 當前的沒有被激活窗口的邊界顏色 |
clAppWorkSpace | 當前的應用程序工作區的顏色 |
clHighlight | 當前的被選擇文本的背景顏色 |
clHighlightText | 當前的被選擇文本的顏色 |
clBtnFace | 當前的按鈕表面的顏色 |
clBtnShadow | 當前的按鈕投影的陰影顏色 |
clGrayText | 當前的無效文本的顏色 |
clBtnText | 當前的按鈕上文本的顏色 |
clInactiveCaptionText | 當前的被激活窗口標題欄的文本顏色 |
clBtnHighlight | 當前的按鈕上高亮度的顏色 |
cl3DDkShadow | 只有對Windows95或NT4.0系統:三維顯示元素陰影的顏色 |
cl3DLight | 只有對Windows95或NT4.0系統:對於三維顯示元素的亮面(朝向光源的面) |
clInfoText | 只有對Windows95或NT4.0系統:ToolTip(工具提示)的文本顏色 |
clInfoBk | 只有對Windows95或NT4.0系統:ToolTip(工具提示)的背景顏色 |
Delphi 鍵值大全 (包括滑鼠及鍵盤)
鍵盤使用常數 | 16 (10)進位對應值 | 對應按鍵 |
vk_Lbutton | $01 (#1) | Left Mouse Button |
vk_Rbutton | $02 (#2) | Right Mouse Button |
vk_Cancel | $03 (#3) | Control-Break procress used |
vk_MButton | $04 (#4) | Middle Mouse Button |
vk_Back | $08 (#8) | BackSpace Key |
vk_Tab | $09 (#9) | Tab key |
vk_Clear | $0C (#12) | Clear Key |
vk_Return | $0D (#13) | Return Key |
vk_Shift | $10 (#16) | Shift Key |
vk_Control | $11 (#17) | Ctrl Key |
vk_Menu | $12 (#18) | Alt Key |
vk_Pause | $13 (#19) | Pause Key |
vk_Capital | $14 (#20) | Caps Lock Key |
vk_Escape | $1B (#27) | ESC Key |
vk_Space | $20 (#32) | Space Key |
vk_Prior | $21 (#33) | PageUp Key |
vk_Next | $22 (#34) | PageDown Key |
vk_End | $23 (#35) | End Key |
vk_Home | $24 (#36) | Home Key |
vk_Left | $25 (#37) | Left Arrow Key |
vk_Up | $26 (#38) | Up Arrow Key |
vk_Right | $27 (#39) | Right Arrow Key |
vk_Down | $28 (#40) | Down Arrow Key |
vk_Select | $29 (#41) | Select Key |
vk_Print | $2A (#42) | PrintScreen Key |
vk_Execute | $2B (#43) | Execute Key |
vk_SnapShot | $2C (#44) | PrintScreen Key for Windows 3.0 or later |
vk_Copy | $2C (#44) | Not used by keyboards |
vk_Insert | $2D (#45) | Insert Key |
vk_Delete | $2E (#46) | Delete Key |
vk_Help | $2F (#47) | Help Key |
vk_0 | $30 (#48) | 0 Key |
vk_1 | $31 (#49) | 1 Key |
vk_2 | $32 (#50) | 2 Key |
vk_3 | $33 (#51) | 3 Key |
vk_4 | $34 (#52) | 4 Key |
vk_5 | $35 (#53) | 5 Key |
vk_6 | $36 (#54) | 6 Key |
vk_7 | $37 (#55) | 7 Key |
vk_8 | $38 (#56) | 8 Key |
vk_9 | $39 (#57) | 9 Key |
vk_A | $41 (#65) | A Key |
vk_B | $42 (#66) | B Key |
vk_C | $43 (#67) | C Key |
vk_D | $44 (#68) | D Key |
vk_E | $45 (#69) | E Key |
vk_F | $46 (#70) | F Key |
vk_G | $47 (#71) | G Key |
vk_H | $48 (#72) | H Key |
vk_I | $49 (#73) | I Key |
vk_J | $4A (#74) | J Key |
vk_K | $4B (#75) | K Key |
vk_L | $4C (#76) | L Key |
vk_M | $4D (#77) | M Key |
vk_N | $4E (#78) | N Key |
vk_O | $4F (#79) | O Key |
vk_P | $50 (#80) | P Key |
vk_Q | $51 (#81) | Q Key |
vk_R | $52 (#82) | R Key |
vk_S | $53 (#83) | S Key |
vk_T | $54 (#84) | T Key |
vk_U | $55 (#85) | U Key |
vk_V | $56 (#86) | V Key |
vk_W | $57 (#87) | W Key |
vk_X | $58 (#88) | X Key |
vk_Y | $59 (#89) | Y Key |
vk_Z | $5A (#90) | Z Key |
vk_NumPad0 | $60 (#96) | Numeric KeyPad 0 Key |
vk_NumPad1 | $61 (#97) | Numeric KeyPad 1 Key |
vk_NumPad2 | $62 (#98) | Numeric KeyPad 2 Key |
vk_NumPad3 | $63 (#99) | Numeric KeyPad 3 Key |
vk_NumPad4 | $64 (#100) | Numeric KeyPad 4 Key |
vk_NumPad5 | $65 (#101) | Numeric KeyPad 5 Key |
vk_NumPad6 | $66 (#102) | Numeric KeyPad 6 Key |
vk_NumPad7 | $67 (#103) | Numeric KeyPad 7 Key |
vk_NumPad8 | $68 (#104) | Numeric KeyPad 8 Key |
vk_NumPad9 | $69 (#105) | Numeric KeyPad 9 Key |
vk_Multiply | $6A (#106) | Mutiply Key |
vk_Add | $6B (#107) | Add Key |
vk_Separator | $6C (#108) | Sepatator Key |
vk_Subtract | $6D (#109) | Subtract Key |
vk_Decimal | $6E (#110) | Decimal Key |
vk_Divide | $6F (#111) | Divide Key |
vk_F1 | $70 (#112) | F1 Key |
vk_F2 | $71 (#113) | F2 Key |
vk_F3 | $72 (#114) | F3 Key |
vk_F4 | $73 (#115) | F4 Key |
vk_F5 | $74 (#116) | F5 Key |
vk_F6 | $75 (#117) | F6 Key |
vk_F7 | $76 (#118) | F7 Key |
vk_F8 | $77 (#119) | F8 Key |
vk_F9 | $78 (#120) | F9 Key |
vk_F10 | $79 (#121) | F10 Key |
vk_F11 | $7A (#122) | F11 Key |
vk_F12 | $7B (#123) | F12 Key |
vk_F13 | $7C (#124) | F13 Reserve Key |
vk_F14 | $7D (#125) | F14 Reserve Key |
vk_F15 | $7E (#126) | F15 Reserve Key |
vk_F16 | $7F (#127) | F16 Reserve Key |
vk_F17 | $80 (#128) | F17 Reserve Key |
vk_F18 | $81 (#129) | F18 Reserve Key |
vk_F19 | $82 (#130) | F19 Reserve Key |
vk_F20 | $83 (#131) | F20 Reserve Key |
vk_F21 | $84 (#132) | F21 Reserve Key |
vk_F22 | $85 (#133) | F22 Reserve Key |
vk_F23 | $86 (#134) | F23 Reserve Key |
vk_F24 | $87 (#135) | F24 Reserve Key |
vk_NumLock | $90 (#144) | NumLock Key |
vk_Scroll | $91 (#145) | Scroll Lock Key |
Delphi 使程式碼簡潔的忠告
一、Boolean值操作應該是直接的if If_Love_Delphi then
Result:=True
else
Result:=False;改成這樣寫比較好:
Result:= If_Love_Delphi;
二、避免使用 if/then/if ,而用and来代替例1:
if If_Love_Delphi then
if If_Love_Linux then
TryKylix(Now);改成這樣寫比較好:
if If_Love_Delphi and If_Love_Linux then
TryKylix(Now);例2:
if If_Love_Delphi then
if If_Love_Linux then
Result:=True;改成這樣寫比較好:
Result:= If_Love_Delphi and If_Love_Linux;
三、判斷boolean值時不需用"=True","=False"
if (If_Love_Delphi=True) and (If_Love_Linux=False) then
DoNotTryLinux;改成這樣寫比較好:
if If_Love_Delphi and not If_Love_Linux then
DoNotTryLinux;
四、盡量不要用"+"來進行字串合併ShowMessage('在下身高'+IntToStr(iHeight)+'尺,體重'+IntToStr(iWeight)+'公斤。');改成這樣寫比較好:
ShowMessage(Format('在下身高%d,體重%d。', [iHeight,iWeight]));
Result:=True
else
Result:=False;改成這樣寫比較好:
Result:= If_Love_Delphi;
二、避免使用 if/then/if ,而用and来代替例1:
if If_Love_Delphi then
if If_Love_Linux then
TryKylix(Now);改成這樣寫比較好:
if If_Love_Delphi and If_Love_Linux then
TryKylix(Now);例2:
if If_Love_Delphi then
if If_Love_Linux then
Result:=True;改成這樣寫比較好:
Result:= If_Love_Delphi and If_Love_Linux;
三、判斷boolean值時不需用"=True","=False"
if (If_Love_Delphi=True) and (If_Love_Linux=False) then
DoNotTryLinux;改成這樣寫比較好:
if If_Love_Delphi and not If_Love_Linux then
DoNotTryLinux;
四、盡量不要用"+"來進行字串合併ShowMessage('在下身高'+IntToStr(iHeight)+'尺,體重'+IntToStr(iWeight)+'公斤。');改成這樣寫比較好:
ShowMessage(Format('在下身高%d,體重%d。', [iHeight,iWeight]));
隨時按ESC離開視窗
首先在Additional->新增一個ApplicationEvents,然後在事件OnShortCut新增下列程式碼:
procedure TFmain.ApplicationEvents1ShortCut(var Msg: TWMKey;var Handled:Boolean);
begin
if (TWMKey(Msg).CharCode = VK_ESCAPE) then
self.close
end;
delphi的四捨五入,無條件進位,無條件捨去,四捨六入
一般都會使用Round 和 RoundTo 這個函數
但是這個函數在Delphi裡指的是四捨六入5成雙
要四捨五入, Delphi 也有, 就是 SimpleRoundTo
不過要注意,使用這個函數必須 use Math
要四捨五入也有別的辦法
浮點數四捨五入
formatfloat('#,##0.##',輸入的數字); // 點## 是要四捨五入到第2位數,輸出為字串
不過這個方式有時不會進位..是formatfloat的bug..最好還是用SimpleRoundTo
無條件進位
使用 ceil() 這個函數
無條件捨去
使用 floor() 這個函數
在負數的使用要特別注意,結果跟"正整數"是相反的
floor(3.4)=3 , floor(-3.4) = -4
ceil(3.4)=4 , ceil(-3.4)= -3
簡單的說, floor() 這個函數是往小的地方靠近為整數,ceil()則相反
使Form慢慢展開顯示,慢慢隱形消失
在onShow事件加入
並在Form的OnCloseQuery事件加入
AnimateWindow(handle,500,AW_Center); //展開出現
AnimateWindow(handle,500,AW_BLEND); //慢慢顯示出來
並在Form的OnCloseQuery事件加入
AnimateWindow(handle,500,AW_Center);//慢慢消失
使用ShellExecute呼叫外部程式
// 「執行 notepad」
ShellExecute(Handle, nil, 'notepad', nil, nil, SW_SHOWNORMAL);
// 「打開 word 檔」
ShellExecute(Handle, 'open', 'C:\a.doc', nil, nil, SW_SHOWNORMAL);
// 「列印 excel 檔」
ShellExecute(Handle, 'print', 'C:\a.xls', nil, nil, SW_SHOWNORMAL);
// 「開網頁」
ShellExecute(Handle, nil, 'http://www.borland.com/', nil, nil, SW_SHOWNORMAL);
// 「寄信」
ShellExecute(Handle, nil, 'mailto:name@host.com?subject=主旨&body=內文', nil, nil, SW_SHOWNORMAL);
// 「我的電腦」
ShellExecute(0, 'open', '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}', nil, nil, SW_NORMAL);
// 「網路上的芳鄰」
ShellExecute(0, 'open', '::{208D2C60-3AEA-1069-A2D7-08002B30309D}', nil, nil, SW_NORMAL);
// 「我的文件」
ShellExecute(0, 'open', '::{450D8FBA-AD25-11D0-98A8-0800361B1103}', nil, nil, SW_NORMAL);
// 「控制台」
ShellExecute(0, 'open', '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}', nil, nil, SW_NORMAL);
// 「印表機」
ShellExecute(0, 'open', '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}', nil, nil, SW_NORMAL);
訂閱:
文章 (Atom)