06月02日,工作学习日志

本文介绍了作者在工作中对DELPHI操作注册表的方法进行了学习,并实现了多线程的功能。通过具体的代码示例展示了如何使用DELPHI操作注册表,以及两种创建多线程的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    今天 没有具体的工作,来到公司后,打开电脑,就开始一天的工作,首先列了一下今天 都要做什么,然后开始了我一天的工作。

    对数据库的一个学习,以前有好多东西都有些忘了,所以得快点把数据库通一下,看了一下存储过程,及以些连接语句的查询。东西还是老东西,但是每看一次都会有新的收获。也许这就是温故而知新吧。

 然后就是DELPHI操作注册表的一种方法,利用DELPHI操作注册表,可以把系统的大部分设置进行修改及以些信息的配置,都可以保存到数据库中。ROOTKEY /  OPENKEY / WRITESTRING / READSTRING / WRITEDATE / 等这些函数的应用,真的可以把注册表变的面目全非,也可以把注册表中的某些键进行删除。

2.  接下来是对多线程的一个学习,以前听老师讲过多线程,但是在开发过程中,从来都没有用到过多线程。今天也算是用程序第一次实现多线程了吧。感觉不错,线程之间的并发执行,其实就是CUP为其分配不同的时间片,在视觉上形成了一种并发执行的效果。说白了,并发就是一个线程猛抢资源。

HANDLE CreateThread(
    LPSECURITY_ATTRIBUTES lpThreadAttributes,
    DWORD dwStackSize,
    LPTHREAD_START_ROUTINE lpStartAddress,
    LPVOID lpParameter,
    DWORD dwCreationFlags,
    LPDWORD lpThreadId
);,

这是一个线程创建的函数结构。看起来挺复杂,其实不然,只要是执行,创建线程对像。把里面的参数写入就可以了。很简单。详细请查阅资料。看看下面,您会不会明白一点。

 

procedure tmythread.execute;
var
  i:Integer;
  begin
    freeonterminate:=true;   //线程执行完成可随即释放;
    for i :=0 to 500000 do
    begin
      form1.Canvas.Lock;
      Form1.Canvas.TextOut(10,10,IntToStr(i));
      Form1.Canvas.Unlock;
    end;
  end;  

 

 

procedure TForm1.Button1Click(Sender: TObject);
var
  mythread:TMyThread ;
begin
  mythread:=TMyThread.Create(True);
  mythread.Resume;
end;

另一种方法,是用系统的API  函数来进行创建多线程。这种方法更简单,且为常用。

function myfun(p:Pointer):Integer;std                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    call;
  var
    i:integer;
  begin
    for i:=0 to 500000 do
    begin
      Form1.Canvas.Lock;
      form1.Canvas.TextOut(10,50,IntToStr(i));
      Form1.Canvas.Unlock;
    end;
    result:=0;
  end;

 

procedure TForm1.Button4Click(Sender: TObject);
var
  id:THandle;
begin
  CreateThread(nil,0,@myfun,nil,0,id);

end;

 

以上分别是两个不同的关于线程的创建方法。参考一下吧。

 

3。最后进行了一些DLL的测试,不过不知道怎么回事,动态调用DLL的时候老出错,不知道是怎么回事,读取内存的时候老检测内存出错。这是个问题。得好好的查些资料。------------------------------------------------------------------

------------------------------------------------

---------------------------------

---------------------

--------------

-------

---

-

4.突然想起来,在前公司的时候,最后离职的时候,公司买了一个指纹模块。不大的一个东西,郑州好像没有卖的。真的是哟。本来要进行指纹模块的学习与研究,可是要离开公司了。以后有机会再学吧。于是上网查了一些关系指纹验证的一些信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值