今天 没有具体的工作,来到公司后,打开电脑,就开始一天的工作,首先列了一下今天 都要做什么,然后开始了我一天的工作。
对数据库的一个学习,以前有好多东西都有些忘了,所以得快点把数据库通一下,看了一下存储过程,及以些连接语句的查询。东西还是老东西,但是每看一次都会有新的收获。也许这就是温故而知新吧。
然后就是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.突然想起来,在前公司的时候,最后离职的时候,公司买了一个指纹模块。不大的一个东西,郑州好像没有卖的。真的是哟。本来要进行指纹模块的学习与研究,可是要离开公司了。以后有机会再学吧。于是上网查了一些关系指纹验证的一些信息。