DELPHI之备忘(二)

1. DLL的资源释放问题

ContractedBlock.gifExpandedBlockStart.gifEXITPROC
//*******************
//释放资源
//*******************
var
  dllExit: Pointer;
procedure MyExit;
begin
//资源释放
 ExitProc :
= dllExit;
end;
//******************************
//创建资源
//******************************
begin
  
// 资源创建
  ExitProc :
= @MyExit;
  dllExit :
= ExitProc;
end.

这种释放方式不能在动态载入下用,即loadLibrary方式载入,HELP帮助说明如下:

Do not use ExitProc in a dynamically loaded package. This procedure is called when the process halts, not when a package or DLL is unloaded. If you set ExitProc from a package or DLL, it may interfere with the ExitProc of the host executable. Because ExitProc is not compatible with packages, it is recommended that you add code to the finalization section of a unit instead. Inside a DLL, you can use the DLLProc variable instead.

应该用单元里面加initialization和finalization来控制

2. DLL引用传入的Tquery组件应注意Close和UnPrepare,如下:

其中InitDriver是导出函数

ContractedBlock.gifExpandedBlockStart.gifTquery
function InitDriver(const  AOwner:TComponent;const Aquery:Tquery):Byte;stdcall;
begin
  result :
= 1;
  
if fileexists('.\SQL\s.SQL'then begin
    aquery.Close;
    aquery.SQL.LoadFromFile(
'.\SQL\s.SQL');    
    //aquery.Prepare;不能用
    aquery.ParamByName(
'param').AsInteger := 1    ;
    aquery.Open;
    
while not aquery.Eof do begin
      。。。。 
      aquery.Next;
    
end;
    aquery.Close;
    aquery.UnPrepare; 
  
end;  
  result :
= 0;
end;

3. 变体记录

ContractedBlock.gifExpandedBlockStart.gif变体记录
TMessage = packed record
    Msg: Cardinal;
    
case Integer of
      
0: (
        WParam: Longint;
        LParam: Longint;
        Result: Longint);
      
1: (
        WParamLo: Word;
        WParamHi: Word;
        LParamLo: Word;
        LParamHi: Word;
        ResultLo: Word;
        ResultHi: Word);
end;

变体记录使用能够容纳可变部分最大长度的空间来存储!而CASE不占存储,只是用来判别可变部分的类型。

CASE TAG:INTEGER OF.....  VAR.TAG :=1;其实是没有效果的!
4.GRID 右键选中 并显示右键菜单

ContractedBlock.gifExpandedBlockStart.gifGRID右键菜单
procedure Tform.sgaddressMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var    p:Tpoint;selectrow,selectcol :integer;
    
//   GrdCrd:   TGridCoord;
    myRect: TGridRect;
begin

  
if button = mbRight then begin
   
// grdcrd := sgaddress.MouseCoord(x,y);  // 也可以用这个获取cell
    sgaddress.MouseToCell(x,y,selectcol,selectrow);
    
if selectcol < 0 then exit;
    
if selectrow < 0 then exit;
    myRect.Left :
=0;// selectcol;
    myRect.Right :
=sgaddress.ColCount-1//selectcol;
    myRect.Top :
= selectrow;
    myRect.Bottom :
= selectrow;
    sgaddress.Selection :
= myRect;  //修改选中区域

   
// if (y >= sgaddress.CellRect(grdcrd.X,grdcrd.Y).Top)
   
//  and (y <= (sgaddress.CellRect(grdcrd.X,grdcrd.Y).Top+15)) then
    
if (y >= sgaddress.CellRect(selectcol,selectrow).Top)
     
and (y <= (sgaddress.CellRect(selectcol,selectrow).Top+15)) then begin
    GetCursorPos(P);
    PopupMemu.Popup(p.x,p.y);
    
end;
  
end;
end;

5.结构体指针的NEW和DISPONSE方法 
暂缺
6.opendialog会影响系统当前工作目录,即不能用'.\file'而要用ExtractFileDir(Application.Exename)+'file';

转载于:https://www.cnblogs.com/enli/archive/2008/12/17/1356744.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 307. 区域和检索 - 数组可修改(树状数组)

1. 题目 给定一个整数数组 nums&#xff0c;求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和&#xff0c;包含 i, j 两点。 update(i, val) 函数可以通过将下标为 i 的数值更新为 val&#xff0c;从而对数列进行修改。 示例: Given nums [1, 3, 5] sumRange(0, 2) -> …

python地理_【Python教程】地理可视化

Matplotlib是Python常用的数据绘制包&#xff0c;其绘图功能强大&#xff1b;而Basemap则是Matplotlib的一个子包&#xff0c;负责地图绘制。本文简单介绍如何利用该程序包绘制风向图。具体操作如下&#xff1a;导入命令1)设置工作环境并导入程序包%cd "F:\\Dropbox\\pyth…

部署windows服务

写好了windows服务以后&#xff0c;再切换到设计页面&#xff0c;右键点击添加安装程序&#xff0c;点击后自动给你添加上一个安装组件&#xff0c;再设置下serviceProcessInstaller1组件的属性&#xff08;在设计器中设置&#xff0c;不在代码中&#xff09;&#xff0c;其中有…

LeetCode 327. 区间和的个数(multiset二分查找/归并排序)

文章目录1. 题目2. 解题2.1 动态规划超时2.2 二分查找2.3 归并排序1. 题目 给定一个整数数组 nums&#xff0c;返回区间和在 [lower, upper] 之间的个数&#xff0c;包含 lower 和 upper。 区间和 S(i, j) 表示在 nums 中&#xff0c;位置从 i 到 j 的元素之和&#xff0c;包…

AcWing之二维数组的查找

题目 在一个二维数组中&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。 请完成一个函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。样例 输入数组&#xff1a; [ [1,2,8,9]&…

sql server排序慢_SQL 查询调优之 where 条件排序字段以及 limit 使用索引的奥秘

(给数据分析与开发加星标&#xff0c;提升数据技能)作者&#xff1a;风过无痕-唐www.cnblogs.com/tangyanbo/p/6378741.html奇怪的慢sql我们先来看2条sql第一条&#xff1a;select * from acct_trans_log WHERE acct_id 1000000000009000757 order by create_time desc limit…

fedora10完全配置文档连接网址

code.google.com/p/fedora-zh/downloads/list 转载于:https://www.cnblogs.com/glc400/archive/2008/12/20/4473856.html

LeetCode 326. 3的幂

1. 题目 给定一个整数&#xff0c;写一个函数来判断它是否是 3 的幂次方。 示例 1: 输入: 27 输出: true示例 2: 输入: 0 输出: false示例 3: 输入: 9 输出: true示例 4: 输入: 45 输出: false进阶&#xff1a; 你能不使用循环或者递归来完成本题吗&#xff1f;来源&#xff…

ps抠头发插件_彻底告别抠图的烦恼!PS自动抠图超级插件Topaz ReMask大放送

我们经常需要对各种图片进行抠图&#xff0c;虽然抠图方法很多&#xff0c;但是我们却要花费很长的时间&#xff0c;这无疑来说效率非常不高。有没有一款PS插件可以快速对照片进行抠图&#xff1f;并且可以达到自己理想的效果&#xff1f;当然是有的&#xff0c;今天米朵就送给…

AcWing之找替换空格

题目 请实现一个函数&#xff0c;把字符串中的每个空格替换成"%20"。 你可以假定输入字符串的长度最大是1000。 注意输出字符串的长度可能大于1000。样例 输入&#xff1a;"We are happy."输出&#xff1a;"We%20are%20happy."方法一&#xff…

VC++中忽略所有默认库纯Win32 API编译及链接 - 计算机软件编程 - Wangye's Space

原始链接&#xff1a;VC中忽略所有默认库纯Win32 API编译及链接 - 计算机软件编程 - Wangyes Space 我们在用VC编写Windows程序的时候可能会发现一般可执行体&#xff08;.EXE&#xff09;的文件体积都比较大&#xff0c;于是非常羡慕那些使用Win32汇编编写程 序的人&#xff0…

LeetCode 345. 反转字符串中的元音字母

1. 题目 编写一个函数&#xff0c;以字符串作为输入&#xff0c;反转该字符串中的元音字母。 示例 1: 输入: "hello" 输出: "holle"示例 2: 输入: "leetcode" 输出: "leotcede"说明: 元音字母不包含字母"y"。来源&#xf…

python list存储对象_《python解释器源码剖析》第4章--python中的list对象

4.0 序python中的list对象&#xff0c;底层对应的则是PyListObject。如果你熟悉C&#xff0c;那么会很容易和C中的list联系起来。但实际上&#xff0c;这个C中的list大相径庭&#xff0c;反而和STL中的vector比较类似4.1 PyListObject对象我们知道python里面的list对象是支持对…

AcWing之从尾到头打印链表

题目 输入一个链表的头结点&#xff0c;按照 从尾到头 的顺序返回节点的值。 返回的结果用数组存储。样例 输入&#xff1a;[2, 3, 5] 返回&#xff1a;[5, 3, 2]方法一&#xff1a; /* struct ListNode {int val; //当前结点的值ListNode *next; //指向下一个结点的指针L…

javascript 打开新窗口

一、window.open()支持环境&#xff1a; JavaScript1.0/JScript1.0/Nav2/IE3/Opera3 二、基本语法&#xff1a;window.open(pageURL,name,parameters) 其中&#xff1a;pageURL 为子窗口路径 name 为子窗口句柄 parameters 为窗口参数(各参数用逗号分隔) 三、示例&#xff1a;…

python修改mac地址_python利用_winreg模块制作MAC地址修改工具

通过百度搜索知道&#xff0c;xp下修改MAC地址的方法主要有两个&#xff0c;一种是通过配置本地链接属性来实现&#xff0c;这种方法不适合用程序来完成&#xff0c;另一种是通过修改注册表来完成&#xff0c;本程序主要是利用了这种方法。具体方法&#xff1a;Windows 2000/XP…

我们为什么需要工作流

我们为什么需要工作流 这是我的"基于WF设计业务流程平台"的题外篇 以下是这系列的文章列表,写的很痛苦,但我会继续写下去 基于WF设计业务流程平台-架构 基于WF设计业务流程平台-权限体系 基于WF设计业务流程平台_特定群体与特定人 基于WF设计业务流程平台_参与者与任…

LeetCode 371. 两整数之和(位运算加法)

1. 题目 不使用运算符 和 - ​​​​​​​&#xff0c;计算两整数 ​​​​​​​a 、b ​​​​​​​之和。 示例 1: 输入: a 1, b 2 输出: 3示例 2: 输入: a -2, b 3 输出: 1来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcod…

python函数方法里面用浅复制深复制_图解 Python 浅拷贝与深拷贝

Python 中的赋值语句不会创建对象的拷贝&#xff0c;仅仅只是将名称绑定至一个对象。对于不可变对象&#xff0c;通常没什么差别&#xff0c;但是处理可变对象或可变对象的集合时&#xff0c;你可能需要创建这些对象的 “真实拷贝”&#xff0c;也就是在修改创建的拷贝时不改变…

32位Windows系统未分页内存限制导致的VPS的容量问题

问题 32位Windows系统未分页内存限制导致的VPS的容量问题 解决方案 在32位的Windows系统上&#xff0c;制约VPS的数量的主要参数是“未分页内存” 打开Windows自己的任务管理器&#xff0c;选择性能标签&#xff0c;查看“核心内存”&#xff0c;查看“未分页” 在32位的windo…