DELPHI开发经验心得(4)

2025-10-24

ShowMessageFmt('%d,%d,%d,%d,%d,%d,%d', [Year, Month, Day, Hour, Min, Sec, MSec]); //2009,5,21,11,22,33,999

DecodeDateDay(t, Year, Day);

ShowMessageFmt('%d,%d', [Year, Day]); //2009,141; 2009 年第 141 天

DecodeDateWeek(t, Year, Week, Day);

ShowMessageFmt('%d,%d,%d', [Year, Week, Day]); //2009,21,4; 2009 年第 21 周, 周 4

DecodeDateMonthWeek(t, Year, Month, Week, Day);

ShowMessageFmt('%d,%d,%d,%d', [Year, Month, Week, Day]); //2009,5,3,4; 2009 年 5 月的第 3 周, 周 4

DecodeDayOfWeekInMonth(t, Year, Month, Week, Day);

ShowMessageFmt('%d,%d,%d,%d', [Year, Month, Week, Day]); //2009,5,3,4 end;

end.

-----合成時間方法

encodedate 函數 是年月日合成的日期格式

function TryEncodeDate(Year, Month, Day: Word; out Date: TDateTime): Boolean; var

I: Integer;

DayTable: PDayTable; begin

Result := False;

DayTable := @MonthDays[IsLeapYear(Year)];

if (Year >= 1) and (Year <= 9999) and (Month >= 1) and (Month <= 12) and (Day >= 1) and (Day <= DayTable^[Month]) then begin

for I := 1 to Month - 1 do Inc(Day, DayTable^[I]); I := Year - 1;

Date := I * 365 + I div 4 - I div 100 + I div 400 + Day - DateDelta; Result := True; end;

end;

function EncodeDate(Year, Month, Day: Word): TDateTime; begin

if not TryEncodeDate(Year, Month, Day, Result) then ConvertError(@SDateEncodeError); end;

encodetime 函數 是時、分、秒、毫秒合成的時間格式

function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime; begin

if not TryEncodeTime(Hour, Min, Sec, MSec, Result) then ConvertError(@STimeEncodeError);

end;

function TryEncodeTime(Hour, Min, Sec, MSec: Word; out Time: TDateTime): Boolean; begin

Result := False;

if (Hour < HoursPerDay) and (Min < MinsPerHour) and (Sec < SecsPerMin) and (MSec < MSecsPerSec) then begin

Time := (Hour * (MinsPerHour * SecsPerMin * MSecsPerSec) + Min * (SecsPerMin * MSecsPerSec) + Sec * MSecsPerSec + MSec) / MSecsPerDay; Result := True; end; end;

---------------------------------------------------------------------------------------------------------------------------

Delphi中計算字符串長度:Length(),返回的是Int類型

---------------------------------------------------------------------------------------------------------------------------

SQL中四舍五入:SQL> SELECT ROUND(1.56), ROUND(1.56,1), ROUND(12.34, -2) FROM dual;

---------------------------------------------------------------------------------------------------------------------------

導出excel,如果是圖形字符串,則需要轉換 例子:

CAST(C.UNIT_CADDR||C.UNIT_CADDR2||C.UNIT_CADDR3||C.UNIT_CADDR4 AS VARCHAR(254)) AS DETAILDDR

----------------------------------------------------------------------------------------------------------------------------

POS和ANSIPOS的主要作用在于,POS可以多用于是一個字符,而ANSIPOS多用于是多個字符

例如:i:=pos('a','sssssas');

i:=ansipos('abc','sdabcss');

AnsiPos是以Ansi字符做為Pos單位,例如AnsiPos('|','王韡|')得到的值是5

Pos是以字符作為Pos單位,例如Pos('|','王韡|')得到的值是4,因“韡”是由兩個字組成,而其低位是“|”所以Pos后的結果為4

另外AnsiPos和Pos都可以Pos多字符目標,例如: AnsiPos('Abs','123Abs78') = 4 AnsiPos('Abs','123A5678') = 0

Pos('Abs','123Abs78') = 4 Pos('Abs','123A5678') = 0

-------------------------------------------------------------------------------------------------------------------------- Sleep()函數:

作用:程序暫停若干時間,單位是毫秒. 例如:

Sleep (500);

就是到這里停半秒,然后繼續向下運行.

---------------------------------------------------------------------------------------------------------------------------- 用結果集定位: 例子:

with qryCOLOR do begin close;

SQL.Clear;

SQL.Add(' SELECT COLOR_NO,MAX(COLOR_ENG_NAME) COLOR_NAME ');

SQL.Add(' FROM GSINF.INF_PNASS_DTLC '); SQL.Add(' WHERE PO_NO=:P_PO '); SQL.Add(' GROUP BY COLOR_NO ');

Parambyname('P_PO').asstring:=s_po; open; end; if

qrycolor.Locate('COLOR_NO',qryDETAIL.FieldByName('COLOR_NO').asstring,[]) then

col:=qrycolor.FieldByName('COLOR_NAME').asstring else

col:='';

--------------------------------------------------------------------------------------------------------------------------

如何得到checklistbox中選項的值 例子:

checklistbox1.Items.Strings[i];

選中選項: 例子:

checklistbox1.checked[i] := True;

---------------------------------------------------------------------------------------------------------------------------- //雙擊DBGRID選擇

procedure TFrm_BMS_JSW_SetRpFieldInB.dbg_jsw_fe_basic_columnDblClick( Sender: TObject); begin

If dbg_jsw_fe_basic_column.SelectedIndex = 0 Then Begin

With dm_BMS_JSW_SetRpFieldIn.ads_bms_jsw_fe_basic_column Do Begin Edit;

If (Trim(FieldByName('COLUMN_FLAG').AsString) = 'N') Or (Trim(FieldByName('COLUMN_FLAG').AsString) = 'n') Then Begin

FieldByName('COLUMN_FLAG').AsString := 'Y'; End Else Begin

FieldByName('COLUMN_FLAG').AsString := 'N';

End; Post; End; End; end;

---------------------------------------------------------------------------------------------------------------------------

特殊符號可以插入物理表,SQL語句使用參數插入,可以解決這個問題

---------------------------------------------------------------------------------------------------------------------------

給DBGRID填寫記錄時,不一定要指定DBGRID的明細字段,只要給DBGRID的數據源賦值,DBGRID會自動顯示數據源中所有的字段.

---------------------------------------------------------------------------------------------------------------------------

ExtractFileDir:根据參數內容(絕對文件名)獲取該文件所在的路徑(不含最后面的那個斜杠)

getcurrentdir:獲取當前路徑,但是注意,此項值在調用OPENDIALOG或者SAVEDIALOG之后會被動態改變.

delphi里的當前路徑是什么意思:是指EXE可執行文件所在路徑

ExtractFilePath(ParamStr(0))表示什么路徑:表示該可執行文件所在路徑(完整路徑)

delphi中當前路徑的上一層,怎么表示:請參照以下函數 //以下代碼純手工輸入,在DELPHI7下測試通過 //在USES里增加引用如下單元:StrUtils function getParentDirectory: String;

var

cPath : String; begin

cPath := ExtractFilePath(ParamStr(0)); if RightStr(cPath, 1) = '\\' then begin

cPath := LeftStr(cPath, Length(cPath) - 1); end;


DELPHI开发经验心得(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2024秋福师《20世纪中国文学研究专题》在线作业一3

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219