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;

