Delphi中建议使用的语句

    技术2022-05-11  111

    { 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;

    最新回复(0)