自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 如何根据驱动程序及其安装文件来访问该设备呢(Visual C++ or C++ Builder均可以)

First of all,我要讲一下Windows对每检测到一个新设备的处理过程:1.首先Windows将各种设备分成不同的设备类,比如说USB Storage存储类设备,而这些类设备都有一个GUID,它们位于注册表中HKEY_LOCAL_MACHINE/ControlSet001/Control/Class下,在这个键下你看到的以128位长度结点名称为结点都是设备类。2.当检测到一个新设备时,W

2003-07-22 08:00:00 2875 3

原创 用C++ Builder中的TServerSocket,TClientSocket来写网络通讯程序

本文主要介绍如何在C++ Builder中用TServerSocket,TClientSocket来写一个网络间短包,文件传输的程序,这个程序可以支持:1.局域网上的传输。2.局域网与公网的传输(双向传输),在第二篇文章中我将用socket api写一个客户端和服务器,功能和本文中的功能一样。使用通讯协议TCP,这里的客户端和服务器使用的都是阻塞模式---多线程。Client:.h Filecla

2003-07-22 07:58:00 8927

原创 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)

在7月4日看完sockcomp.pas后,我决定用socket api来写一个客户端和服务器并且同时支持TCP,UDP协议,于是我就去做,现将代码贴出来(已调试通过)Socket api Client:#ifndef UDPClientH#define UDPClientH#include #include #include #include #include #include "CCEdit.h

2003-07-22 07:58:00 6829 3

原创 软件模拟I2C总线操作。

     在单片机应用中,I2C(I方C)总线一种简单,双向的二线制同步串行总线,它只需要两根串行线,脉冲线,就可以在总线与连接的器件之间传送信息, 它不外乎有以下几个特点:a.每个连接到总线上的器件都可以进行唯一的寻址,还可建立起简单的主从关系,主器件既可作为发送器,也可作为接收器.b.它带竞争电路和仲裁电路,可以接收多个主器件发送的数据,而这些数据不会产混乱.c.同步脉冲可以允许器件可以通过总

2003-05-27 11:26:00 3881 1

原创 通过COM使用ADO

在Visual C++或C++ Builder中,我们可以通过访问ADO的COM对象来将对ADO的操作封装成一个类。首先,我们需要对MSADO15.DLL进行导入,让它生成类型库。在C++ Builder中,用TLIBIMP.EXE来生成ADODB_TLB.h,ADODB_TLB.cpp等文件,然后我们通过阅读类型库中的信息,从而可以写成这个类:.h File#ifndef ADOH#define

2003-05-14 17:34:00 2744 2

原创 80386ASM程序设计基础(九)

 虽然80386处理器要较以前的处理器的功能大大增强,但这些功能只能在保护模式下才能全部得到发挥。在实模式下最大寻址空间只有1M,但在保护模式最大寻址空间可达4G,可以访问到所有的物理内存。同时由于引入虚拟内存的概念,在程序设计中可使用的地址空间为64TB。80386处理器采用了可扩充的分段管理和可选的分页管理机制,这两个存储管理机制由MMU(Memory Management Unit)部件来实

2003-03-18 08:55:00 2278

原创 80386ASM程序设计基础(十)

主要介绍段描述符,段选择子   在保护模式下,段是实现虚拟地址到线性地址转换的基础。在保护方下,每个段有三个参数:段基址,段界限,段属性。段基址规定了线性地址空间中段的开始地址,段基址长度为32位,所以任何一个段都可以从32位线性地址空间中的任何一个字节开始,这一点和实式方式不同,实式方式下要求段的边界必须被16整除。段界限规定段的大小,段界限用20位表示,而且段界限可以是字节或4K为单位,这个称

2003-03-18 08:55:00 1802

原创 80386ASM程序设计基础(十一)

 主要介绍系统地址寄存器和控制寄存器以及在程序中实方式下与保护方式下的切换   80386处理器新增了一组控制寄存器CR0,CR1,CR2,CR3和一组系统地址寄存器GDTR,LDTR,IDTR,TR,它们全部都是32位的。CR0包含了指定处理器工作方式的控制位,CR1保留未使用,CR2和CR3由分页管理部件使用,CR0中的5~30位和CR3中的0~11位必须为0,分别介绍如下:     ____

2003-03-18 08:55:00 2423 2

原创 80386ASM程序设计基础(一)

    80386 ASM程序设计基础,呵呵,这是最近一段时间我的业余爱好。本期将连续推出若干篇有关80386ASM程序设计的基础,主要介绍80386ASM指令的详细用法及如何在80386实模式下,保护模式下及虚拟8086模式编程以及我会详细介绍80386下的段页管理机制,我会将80386下的指令与8086下的相同指令进行比较。在你去看罗云彬的ASM编程之前,不妨先看看我的基础篇,希望有志于从事汇

2003-03-10 10:25:00 3021

原创 80386ASM程序设计基础(二)

 80386处理器的寻址方式    在实式模式下,80386处理器的最大寻址空间仍然为1M,和8086/8088相似。即段地址*10H+段内偏移地址,从而形成20位地址。此种模式下,段基址是16的倍数,长度最大不超过64K。    在保护模式下,80386处理器可以使用所有的物理内存。段基址可以是32位,也可以不是16的倍数,同时它的最大长度为4G,这与8086完全不同,在形成逻辑地址时用段基址直

2003-03-10 10:25:00 2153

原创 80386ASM程序设计基础(六)

高级语言支持,条件字节设置指令  AA.高级语言支持指令,开始于80186,主要是用来简化高级语言的某些特征,总共有3条指令:ENTER,LEAVE,BOUND  a.ENTER,LEAVE,建立与释放堆栈框架命令。在C语言中,栈不仅用来向函数传递入口参数,而且在函数内部的局部变量也存放在栈中。为了准确地存取这些这些局变量和准确地获得入口参数,就需要建立堆栈框架,先看一个小程序:  //C Pro

2003-03-10 10:25:00 1453

原创 80386ASM程序设计基础(八)

 80386实模式下编程 80386在实模式下是一个更快的8086,它不但可以进行32位操作,而且还可以进32位寻址,并且还可以使用80386的扩展指令。不过,由于是在实模下,寻址的最大空间为1M。在一个段内,段的最大长度不超过64K,否则就会发生异常。 在8086下定义一个段的完整格式是: 段名 [定位类型]  [组合类型]  [‘类别’] 80386下定义一个段的完整格式是: 段名 [定位类型

2003-03-10 10:25:00 1625

原创 80386ASM程序设计基础(四)

   算术运算指令,逻辑运算指令,移位指令   AA.算术运算指令   A.加减法运算ADD,ADC,INC,SUB,SBB,DEC,CMP,NEG   a.ADD,和8086功能,用法相同,不过支持32位操作,下面的语句都是合法的。   ADD  ESI,EDI   ADD  EAX,DWORD  PTR  [1000H]   b.ADC,带进位的加法指令,即OPRDS+OPRDD+CF,其中O

2003-03-10 10:24:00 1718

原创 80386ASM程序设计基础(五)

  控制转移指令,串操作指令  80386控制转移指令包括:转移指令,循环指令,过程调用和返回指令。  A.转移指令包括无条件转移指令JMP和条件转移指令,无条件转移指令分为段内直接转移,段内间接转移,段间直接转移,段间间接转移。由于80386有保护模式和实模式,在实模式下,段内转移的范围在-128~127,段间转移最大范围为64K。在保护模式需要用48位指针,即CS:EIP(16位+32位)。条

2003-03-10 10:24:00 1614

原创 80386ASM程序设计基础(七)

 位操作指令,处理器控制指令 AA.位操作指令,8086新增的一组指令,包括位测试,位扫描。BT,BTC,BTR,BTS,BSF,BSR a.BT(Bit Test),位测试指令,指令格式:   BT OPRD1,OPRD2,规则:操作作OPRD1可以是16位或32位的通用寄存器或者存储单元。操作数OPRD2必须是8位立即数或者是与OPRD1操作数长度相等的通用寄存器。如果用OPRD2除以OPRD

2003-03-10 10:24:00 1718

原创 80386ASM程序设计基础(三)

   在接下来的四篇里将介绍80386的汇编指令及用法,并和8086的指令进行比较。   80386的指令集包含了8086/8088,80186,80286的指令集,可以分为几个大类:数据传送指令,算术运算/逻辑运算指令,移位指令,控制转移指令,串操作指令,高级语言支持的指令,条件字节设置指令,位操作指令,处理器控制指令和保护方式指令。高级语言支持指令始于80186,保护方式指令始于80286,条

2003-03-08 14:57:00 2521 1

原创 Automation In C++ Builder

    Automation:自动化服务器,是基于COM技术的,它可以是其它应用程序驱动的组件.ocx,或者单独的exe文件,它有三种类型: 进程内服务器,本地服务器,进程服务器,无论如何作为服务器,它必须至少包含一个或多个供其它应用程序联接和访问的IDispatch接口,自动化服务器可以没有界面(UI).a.进程内服务器:它不可以单独运行,没有单独的进程地址空间,准确地说它在自动化控制器的进程内

2003-02-24 13:13:00 3233 2

原创 硬盘简单加密.

//以下程序适用平台为WIN98/WINME,WIN2000或者更高版本不支持对硬盘直接读写操作。     我们都有知道硬盘的分区表位于0柱0面1扇区,在偏移地址1BE至1FD处就是硬盘的分区表内容,通常我们看硬盘分区表,只需用DEBUG即可,即是说:C:/>DEBUG-A100 MOV AX,0201 MOV BX,0200 MOV CX,0001 MOV DX,0080 INT 13 INT

2003-02-14 10:48:00 1389

原创 在C++ Builder中如何通过对象名称来访问到该对象呢?答案就是使用MAP容器。

因为,C++ BUILDER是编译型语言,而非解释型语言,所以它没有Visual Foxpro那种宏代换。事实上,这个问题的提出早在去年夏天就出现过,我当时最笨的办法就是用枚举的方法一一列举,去年11月看了一下STL觉得用MAP容器完全可以解决问题,举一个简单的例子来说种这个问题,比如说在TFORM1上我们有20个Edit, 我们假定他们的名称分别是Edit1到Edit20(当然也可以将其命名为更

2003-02-12 11:00:00 1375

原创 在C++ Builder中定义事件

在C++ BUILDER中,事件是一种委托模型,它是对消息的封装。如果你用过VC,你就知道在VC中并不存在什么事件,而只有消息处理函数,而在C++ BUILDER中则是由事件处理函数来负责响应消息。同是,事件本身也是一指针,它是一个闭包,通常在C++ BUILDER中有两种事件:通知类型事件(即TNOTIFYEVENT,对WINDOWS消息的封装)和自定义事件。除此之外,我们也知道事件是通过一个虚

2003-02-12 11:00:00 1379

原创 对硬盘的一种简单加密----在分区表上做手脚.

//以下程序适用平台为WIN98/WINME,WIN2000或者更高版本不支持对硬盘直接读写操作。     我们都有知道硬盘的分区表位于0柱0面1扇区,在偏移地址1BE至1FD处就是硬盘的分区表内容,通常我们看硬盘分区表,只需用DEBUG即可,即是说:C:/>DEBUG-A100 MOV AX,0201 MOV BX,0200 MOV CX,0001 MOV DX,0080 INT 13 INT

2003-02-11 14:20:00 1946

原创 硬盘加密----解析三

硬盘加密--解析三上一篇文章解析了硬盘上有两个分区的加密过程,下面的程序将允许有N个分区的加密过程:Source Codes:data segment  FQB DB 512 dup(0);a buffer that will be used to store partition-table  FIRSTP DB 40 dup(0);storing the first partition in

2003-02-11 14:13:00 1725

原创 硬盘加密--解析二

在对硬盘主引导记录熟悉之后,就可以编出很多种硬盘加密程序(完全取决于你自已的需要),随着硬盘容量越来越大,其实我们可以将硬盘分为两个盘,一个是C盘,一个是D盘,平时将C盘重要的文件拷贝至D盘,并将D盘加锁,这样当C盘受到破坏时,就可以解锁D盘,将D盘上存储的文件恢复过来,我下面的程序就是以这一原理来编写的,请看代码:Announcement:You can use any editor to ed

2003-02-11 11:50:00 2032

原创 关于如何解决C++ Builder中DBLookupComboBox不能输入的问题:

如何让DBLookupComboBox能够输入,我的办法是做一个组合的控件,在它的下方(当然也可以是上方)加一个小编辑框,我已经完成了代码的80%,我是从TCustomControl继承下来,在我的代码后会有解释我为什么要从这个类继承,而不是从TWinControl继承,请大家先看代码:.h File//-------------------------------------------

2002-07-15 09:40:00 1995

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除