delphi代码看不懂,请问有人可以解释一下么

manxx123 2018-02-13 03:27:13
function GetSql(ssql, v_Param: string): variant;
var
Q: ToraQuery;
s: tstringlist;
i: Integer;
begin
s := tstringlist.Create;
s.Clear;
Q := ToraQuery.Create(nil);
Q.Session := MainForm.OraSession1;
OpenQuery(Q, ssql);
SetParam(Q, V_Param);
Q.Open;
if Q.IsEmpty then
Result := ''
else
Result := Q.Fields[0].Value;
if VarIsNull(result) then
begin
result := '';
end;
Q.Close;
Q.Free;
end;
...全文
417 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2018-02-17
  • 打赏
  • 举报
回复
Tstringlist类型变量创建后,应该代码结尾使用free释放它。通常情况不释放它,delphi有代码优化功能,在事件式方法中,自动释放它。 规范的代码,应该释放它。
DelphixpeFan 2018-02-14
  • 打赏
  • 举报
回复
更正:Q.ParamByName('V_Param').Value:=V_Param; 怎么s: tstringlist;没释放?还是有说法可以不用释放,可以自行回收资源?
DelphixpeFan 2018-02-14
  • 打赏
  • 举报
回复
学习了,一直不知道有这两个过程 OpenQuery(Q, ssql); SetParam(Q, V_Param);  还是这两个过程是自己定义的?的确挺省事的,一直以来我都是用: Q.Close; Q.sql.clear; Q.sql.add(ssql); Q.Refresh;//获取参数列表 Q.ParamByName.Value:=V_Param; Q.open;      
lyhoo163 2018-02-14
  • 打赏
  • 举报
回复

function GetSql(ssql, v_Param: string): variant;  // 函数GetSql  ssql, v_Param字符串参数 返回值variant类型
                                                  // ssql 是SQLygqk
                                                  // v_Param 是带入的SQL的参数值
var
    Q: ToraQuery;                       // 声明Q 为ToraQuery控件
    s: tstringlist;                     // 声明S 为TStringlist 
    i: Integer;                         // 声明i integer 可以删除
begin
    s := tstringlist.Create;           // 创建 S TStringlist
    s.Clear;                           // tstringlist 清空
    Q := ToraQuery.Create(nil);        // 创建 Q ToraQuery; 
    Q.Session := MainForm.OraSession1; // Q指定 OraSession1 
    OpenQuery(Q, ssql);                // 为Q指定SQL  SSQL是SQL语句 
    SetParam(Q, V_Param);       // 为Q指定参数 V_Param是参数的变量  
    Q.Open;                 // 打开Q          
    if Q.IsEmpty then         // 如果Q数据集为空 
        Result := ''                   // 返回空
    else                               // 否则
        Result := Q.Fields[0].Value;   // 返回打开表的第一个字段的值
    if VarIsNull(result) then          // 如果返回值 Null 
    begin
        result := '';                  // 返回空
    end;
    Q.Close;                           // 关闭Q
    Q.Free;                            // 释放Q
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧