網上找來的 感覺對入門者很有啓示 收藏一下了! No.1 判斷邏輯類型 } var B: Boolean; begin B := Boolean(2); //這樣只是爲了調試//B := True; if B = True then ShowMessage('B = True'); //不建議//不安全 /////// if B then ShowMessage('B'); //建議//簡短 end;
var B: Boolean; begin if Edit1.Text = '是' then //不建議//煩瑣 B := True else B := False; /////// B := Edit1.Text = '是'; //建議//簡短 end;
{ No.2 臨時SQL查詢 } begin QueryTemp.Close; QueryTemp.SQL.Text := 'SELECT SUM(金額) AS 合計 FROM 銷售表'; QueryTemp.Open; //不建議//數據沒有關閉造成資源浪費 ShowMessage(Query1.FieldByName('合計').AsString); ///// QueryTemp.SQL.Text := 'SELECT SUM(金額) AS 合計 FROM 銷售表'; QueryTemp.Open; ShowMessage(Query1.FieldByName('合計').AsString); QueryTemp.Close; //建議用//使用完就關閉 end;
{ No.3 獲取記錄數 } var vRecordCount: Integer; begin Query1.SQL.Text := 'SELECT * FROM Table1'; //不建議//嚴重浪費資源,會取得很多不必要得信息 Query1.Open; vRecordCount := Query1.RecordCount; Query1.Close; ///// Query1.SQL.Text := 'SELECT COUNT(*) AS 記錄數 FROM Table1'; //建議//快速有效、只處理一條記錄 Query1.Open; vRecordCount := Query1.FieldByName('記錄數').AsInteger; Query1.Close;
ShowMessage(IntToStr(vRecordCount)); end;
{ No.4 字段賦值 } begin Table1.Edit; Table1.FieldByName('姓名').AsString := Edit1.Text; //不建議 Table1.FieldByName('日期').AsDateTime := Date; ///// Table1['姓名'] := Edit1.Text; //建議//簡短、擴充性好 //Table1.Fieldvalues['姓名'] := Edit1.Text; //Borland建議的方法。以及Paramvalues[] Table1['日期'] := Date; end;
{ No.5 使用Self指針 } begin Edit1.Parent := Form1; //不建議//Form1只是一個變量//如果沒有分配資源怎麼辦? /////// Edit1.Parent := Self; //建議 end;
{ No.6 遍歷數據集 } var I: Integer; begin Query1.First; for I := 0 to Query1.RecordCount - 1 do begin //不建議//容易被影響 Query1.Next; {}; end; ///// Query1.First; while not Query1.Eof do begin //建議 { } Query1.Next; end; end;
{ No.7 利用Sender參數,使代碼通用 } procedure TForm1.Edit1Change(Sender: TObject); begin if Edit1.Text = '' then //不建議 Edit1.Color := clRed; /////// if TEdit(Sender).Text = '' then //建議//複製到EditXChange中很方便 TEdit(Sender).Color := clRed; end;
{ No.8 使用默認轉換函數 } var I: Integer; begin I := StrToInt(Edit1.Text); //不建議 /////// I := StrToIntDef(Edit1.Text, 0);//建議//參考StrToFloatDef,StrToDateDef....不過這些只有Delphi6纔有 end;
{ No.9 遍歷數組 } var I: Integer; A: array[0..9] of Integer; begin for I := 0 to 9 do //不建議 A[I] := I; /////// for I := Low(A) to High(A) do //建議//擴充性好 A[I] := I; end;
{ No.10 利用MaxInt常量 } begin Caption := Copy(Edit1.Text, 3, Length(Edit1.Text) - 3 + 1); //不建議 /////// Caption := Copy(Edit1.Text, 3, MaxInt); //建議//嘻嘻,少計算一次 end;
{ No.11 Result函數指針 } function FuncName: Boolean; begin FuncName := True; //不建議//並且放在賦值號右邊不能當普通變量 /////// Result := True; //建議//擴充性好 end;
function FuncSum(A: array of Integer): Integer; var I: Integer; begin Result := 0; for I := Low(A) to High(A) do Result := Result + A[I]; //可不能用 FuncSum := FuncSum + A[I]; end;
{ No.12 必須執行的代碼、使用try ... finally ... end語句 } var vStringList: TStringList; begin vStringList := TStringList.Create; vStringList.LoadFromFile('c:/temp.txt'); ShowMessage(vStringList.Text); vStringList.Free; //不建議//如果出現異常資源將無法釋放 /////// vStringList := TStringList.Create; try vStringList.LoadFromFile('c:/temp.txt'); ShowMessage(vStringList.Text); finally //建議//即使出現Exit都會執行 vStringList.Free; end; end;
//其他情況1 begin Screen.Cursor := crHourGlass; try { 耗時操作 } finally Screen.Cursor := crDefault; end; end; //其他情況2 begin Query1.DisableControls; try { 操作數據集 } finally Query1.EnableControls; end; end;
|