(*//
标题:Delphi中建议使用的语句
整理:Zswang
连接:http://www.csdn.net/Expert/TopicView1.asp?id=724036
日期:2002-06-22
支持:wjhu111#21cn.com
//*)

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

翻箱倒柜,《Delphi中建议使用的语句》的更多相关文章

  1. Delphi中的异常处理(10种异常来源、处理、精确处理)

    一.异常的来源 在Delphi应用程序中,下列的情况都比较有可能产生异常. 1.文件处理 2.内存分配 3.windows资源 4.运行时创建对象和窗体 5.硬件和操作系统冲突 6.网络问题 7.数据 ...

  2. 转:delphi异常捕获try except语句 和 try finally语句用法

    转:http://www.java123.net/v/936977.html      2015-06-24 09:27:48 一直写程序都没管他们,也尽量很少用,今天终于想把他给弄个明白,在网上找来 ...

  3. delphi异常捕获try except语句 和 try finally语句用法

    原文地址:delphi try except语句 和 try finally语句用法以及区别作者:1865898133 一直写程序都没管他们,也尽量很少用,今天终于想把他给弄个明白,在网上找来,记下! ...

  4. Delphi编程建议遵守的规范1---缩进、各种语句的用法

    在编程时候,尤其是在一个大的团队里面,遵守统一的编程规范是极其重要的.为所有的开发人员制定一个源代码书写标准,以及程序和文件的命名标准,使他们在编程时有一致的格式,这样,每个编程人员编写的代码能够被其 ...

  5. 在Delphi中动态地使用SQL查询语句 Adoquery sql 参数 冒号

    在Delphi中动态地使用SQL查询语句 在一般的数据库管理系统中,通常都需要应用SQL查询语句来提高程序的动态特性.下面介绍如何在Delphi中实现这种功能.在Delphi中,使用SQL查询语句的途 ...

  6. delphi中的sql语句中空格问题

    sql语句中的冒号 ‘’,在delphi中需要用四个冒号表示 ‘’‘’,delphi中的两个冒号只代表一个冒号

  7. DELPHI中千万别直接使用CreateThread ,建议使用BeginThread(在C++中无大问题,可是到了DELPHI中情况就不一样了)

    以前在写个别程序的时候老是喜欢使用纯API编程. 在C++中无大问题,可是到了DELPHI中情况就不一样了. 当你用 DELPHI写的多线程程序莫名其妙的内存错误,特别是字符串(string)操作;  ...

  8. Delphi中使用比较少的一些语法

    本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ---Murphy 1,构造和析构函数: a,构造函数: 一般基于TComponent组件的派生类 ...

  9. Delphi中String类型原理介绍

    Delphi中字符串的操作很简单,但幕后情况却相当复杂.Pascal传统的字符串操作方法与Windows不同,Windows吸取了C语言的字符串操作方法.32位Delphi中增加了长字符串类型,该类型 ...

随机推荐

  1. 从输入 URL 到浏览器接收的过程中发生了什么事情

    从输入 URL 到浏览器接收的过程中发生了什么事情? 原文:http://www.codeceo.com/article/url-cpu-broswer.html 从触屏到 CPU  首先是「输入 U ...

  2. 记录自己对EventLoop和性能问题处理的一点心得

    1.EventLoop 这里说的EventLoop不是指某一个具体的库或是框架,而是指一种程序实现结构.这种结构多是基于IO多路转接的API(select.poll.epoll之类)以reactor模 ...

  3. JDBC的应用实例

    首先要添加一个引用的库 在项目上右键--构建路径--配置构建路径--在(库)中选择添加外部JAR--选择jar包添加 jar文件是驱动包 添加后包资源管理器中显示一个引用的库会有jar包 加载数据访问 ...

  4. C# 实现软件的重启

    有些时候我们想用户在设置完之后使程序重新启动生效,这时候我们只需要简单的应用一下代码即可: if (MessageBox.Show("设置保存成功,下次启动时生效,是否马上重启软件?&quo ...

  5. 继续OI

    NOIP2016于2016.11.20日12:00正式结束. 我作为oi的生涯 或许会结束? 或者继续? 然而前途依然迷茫,我是否应该继?或是放弃? 距离省选还有3~4个月,我该何去何从? 虽然已经经 ...

  6. paramiko 登录linux主机后执行tail后返回数据不完整解决方法。

    def get_sql_log(host,port,user,password,key_words,out_put_filename): commond='cd crm-app/;./tailall. ...

  7. lua Getter&Setter简单实现

    lua是一门简单的语言,不带类和属性封装,但可以使用lua强大的元表模拟实现: class.lua local type = type local rawset = rawset local setm ...

  8. kaungbin_DP S (POJ 3666) Making the Grade

    Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...

  9. JavaScript分离代码理解

    window.onload=prepareLinks; //页面加载触发onload事件 function prepareLinks(){ //定义函数 var links=document.getE ...

  10. dhtmlxScheduler日程安排控件

    dhtmlxScheduler是一个JavaScript日程安排控件 官方网站:http://www.dhtmlx.com/在线帮助文档:http://docs.dhtmlx.com/doku.php ...